/* 统一管理平台 · 样式(与框架蓝图同一套配色) */
:root{
  --bg:#F4F6F7; --panel:#FFFFFF; --panel-2:#EEF1F3; --sunk:#F0F3F4;
  --ink:#141A22; --ink-2:#48525E; --ink-3:#78828E;
  --line:#E1E5E8; --line-2:#CCD2D7;
  --web:#0C8A82; --web-soft:rgba(12,138,130,.10); --web-line:rgba(12,138,130,.32);
  --flo:#B06A16; --flo-soft:rgba(176,106,22,.11);
  --src:#5B54C9; --src-soft:rgba(91,84,201,.11);
  --good:#2C9A64; --good-soft:rgba(44,154,100,.12);
  --warn:#C1811A; --warn-soft:rgba(193,129,26,.13); --danger:#C0392B;
  --accent:var(--web);
  --sh-1:0 1px 2px rgba(16,28,36,.05); --sh-2:0 4px 14px rgba(16,28,36,.08);
  --r:14px; --r-sm:9px;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0E1218; --panel:#171D26; --panel-2:#1F2630; --sunk:#12171F;
  --ink:#EBEEF2; --ink-2:#A7B0BC; --ink-3:#727C88;
  --line:#28303B; --line-2:#3A434F;
  --web:#39B7AE; --web-soft:rgba(57,183,174,.14); --web-line:rgba(57,183,174,.36);
  --flo:#DFA24A; --flo-soft:rgba(223,162,74,.15);
  --src:#8E86F0; --src-soft:rgba(142,134,240,.16);
  --good:#3EB57C; --good-soft:rgba(62,181,124,.15);
  --warn:#D89F36; --warn-soft:rgba(216,159,54,.15); --danger:#E0685A;
  --sh-1:0 1px 2px rgba(0,0,0,.34); --sh-2:0 6px 22px rgba(0,0,0,.42);
}}

*{box-sizing:border-box}
[hidden]{display:none !important}   /* 关键:别让 .login-wrap/.app 的 display 盖过 hidden */
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer}
.mono,.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* ---------- 登录 ---------- */
.login-wrap{position:relative;overflow:hidden;min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;background:linear-gradient(150deg,#eaf3f0,#dbeae5)}
/* 登录页·流动光斑动态背景 */
.login-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.login-bg .lb{position:absolute;border-radius:50%;filter:blur(48px)}
.login-bg .lb1{width:300px;height:300px;background:radial-gradient(circle,#4fd3b3,transparent 70%);top:-90px;left:8%;opacity:.55;animation:lgb1 15s ease-in-out infinite}
.login-bg .lb2{width:250px;height:250px;background:radial-gradient(circle,#63c6e0,transparent 70%);bottom:-100px;right:10%;opacity:.5;animation:lgb2 18s ease-in-out infinite}
.login-bg .lb3{width:210px;height:210px;background:radial-gradient(circle,#9be0a0,transparent 70%);bottom:8%;left:38%;opacity:.42;animation:lgb3 20s ease-in-out infinite}
@keyframes lgb1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(44px,58px) scale(1.15)}}
@keyframes lgb2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-40px,-48px) scale(1.12)}}
@keyframes lgb3{0%,100%{transform:translate(0,0)}50%{transform:translate(36px,-34px) scale(1.1)}}
.login-card,.login-copy{position:relative;z-index:1}
/* 登录页 logo 扩散光圈+浮动(只作用登录页,不碰顶栏小logo) */
#loginView .brand-mark{position:relative;overflow:visible;animation:lgLogoFloat 4s ease-in-out infinite}
#loginView .brand-mark::after{content:"";position:absolute;inset:0;border-radius:11px;border:1.6px solid var(--web);opacity:.5;animation:lgLogoPulse 2.8s ease-out infinite}
@keyframes lgLogoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes lgLogoPulse{0%{transform:scale(1);opacity:.5}100%{transform:scale(1.7);opacity:0}}
.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-2);padding:26px 24px;display:flex;flex-direction:column;gap:14px}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{width:42px;height:42px;border-radius:11px;background:linear-gradient(135deg,var(--web),var(--src));color:#fff;display:grid;place-items:center;font-weight:800;font-size:20px;flex:none}
.brand-mark.sm{width:30px;height:30px;font-size:15px;border-radius:8px}
.brand-title{font-size:1.15rem;font-weight:760;letter-spacing:-.01em}
.brand-sub{font-size:.8rem;color:var(--ink-3)}
.idtabs{display:flex;gap:6px;background:var(--sunk);border:1px solid var(--line);border-radius:10px;padding:4px}
.idtab{flex:1;border:none;background:transparent;color:var(--ink-2);font-weight:600;font-size:.88rem;padding:8px 0;border-radius:7px;transition:.15s}
.idtab.active{background:var(--web-soft);color:var(--web)}
.fld{display:flex;flex-direction:column;gap:5px;font-size:.8rem;color:var(--ink-3)}
.fld input{font-size:1rem;color:var(--ink);background:var(--sunk);border:1px solid var(--line-2);border-radius:9px;padding:11px 13px;outline:none;transition:.15s}
.fld input:focus{border-color:var(--web);background:var(--panel)}
.btn-primary{background:var(--web);color:#fff;border:none;border-radius:9px;padding:12px;font-size:1rem;font-weight:700;transition:.15s}
.btn-primary:hover{filter:brightness(1.06)} .btn-primary:disabled{opacity:.6;cursor:default}
.btn-ghost{background:transparent;color:var(--ink-3);border:none;font-size:.85rem;padding:4px}
.btn-ghost:hover{color:var(--ink-2)}
.msg{font-size:.85rem;padding:9px 12px;border-radius:8px;background:var(--warn-soft);color:var(--warn)}
.msg.err{background:rgba(192,57,43,.12);color:var(--danger)}
.login-foot{font-size:.78rem;color:var(--ink-3);text-align:center}
.login-copy{font-size:.75rem;color:var(--ink-3)}
/* 2026-11-02 汤姆：登录页底部挂 ICP 备案号，链到工信部备案网站（规定要在首页底部中间写备案号） */
.login-copy .login-icp{display:block;margin-top:4px;text-align:center;color:inherit;text-decoration:none}
.login-copy .login-icp:hover{text-decoration:underline}

/* ---------- 主布局 ---------- */
.app{display:grid;grid-template-columns:230px 1fr;height:100%}
@media(max-width:720px){.app{grid-template-columns:1fr}.sidebar{display:none}}
.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 12px}
.side-brand{display:flex;align-items:center;gap:9px;font-weight:720;font-size:1rem;padding:6px 8px 14px;letter-spacing:-.01em}
.nav{display:flex;flex-direction:column;gap:3px;flex:1;overflow-y:auto}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;border:none;background:transparent;color:var(--ink-2);font-size:.92rem;font-weight:600;text-align:left;width:100%;transition:.12s}
.nav-item:hover{background:var(--sunk)}
.nav-item.active{background:var(--web-soft);color:var(--web)}
.nav-item .ni-ic{width:22px;height:22px;flex:none;display:grid;place-items:center}
.nav-item .ni-ic svg{width:18px;height:18px}
.nav-group{font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding:12px 12px 5px}
.side-foot{border-top:1px solid var(--line);padding-top:12px;margin-top:8px;display:flex;flex-direction:column;gap:8px}
.user-chip{font-size:.85rem;color:var(--ink-2);font-weight:600;padding:0 8px;display:flex;align-items:center;gap:8px}
.user-chip .role-pill{font-size:.66rem;font-weight:700;color:var(--src);background:var(--src-soft);padding:2px 7px;border-radius:5px}
.side-actions{display:flex;gap:14px;padding:0 8px}
.lnk{background:none;border:none;color:var(--ink-3);font-size:.82rem;padding:0}
.lnk:hover{color:var(--web)}
.lnk-inline{background:none;border:none;color:var(--warn);font-weight:700;text-decoration:underline;font-size:inherit;padding:0}

.main{overflow-y:auto;height:100%}
.warnbar{background:var(--warn-soft);color:var(--warn);font-size:.85rem;padding:10px 20px;border-bottom:1px solid var(--line)}
.content{padding:clamp(16px,3vw,30px)}
.empty{color:var(--ink-3);text-align:center;padding:60px 0;font-size:.92rem}

/* ---------- 通用模块头 ---------- */
.mod-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.mod-head h1{margin:0;font-size:clamp(1.3rem,3vw,1.7rem);font-weight:760;letter-spacing:-.02em}
.mod-head .sub{color:var(--ink-3);font-size:.86rem;margin-top:3px}
.mod-head .tools{display:flex;gap:8px;align-items:center}
.btn-sm{border:1px solid var(--line-2);background:var(--panel);color:var(--ink-2);border-radius:8px;padding:7px 13px;font-size:.85rem;font-weight:600}
.btn-sm:hover{border-color:var(--web);color:var(--web)}

/* ---------- 看板 ---------- */
.day-block{margin-bottom:26px}
.day-label{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.day-label::after{content:"";flex:1;height:1px;background:var(--line)}
.day-label .pill{font-weight:700;letter-spacing:0;text-transform:none;color:var(--web);background:var(--web-soft);padding:2px 9px;border-radius:999px}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
@media(max-width:640px){.tiles{grid-template-columns:repeat(2,1fr)}}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh-1)}
.tile .k{font-size:.76rem;color:var(--ink-3);font-weight:600}
.tile .v{font-size:1.7rem;font-weight:800;letter-spacing:-.02em;margin-top:4px;line-height:1.1}
.tile .u{font-size:.9rem;font-weight:600;color:var(--ink-3);margin-left:3px}
.grids{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:820px){.grids{grid-template-columns:1fr}}
.gcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);overflow:hidden}
.gcard.wide{grid-column:1/-1}
.gcard h3{margin:0;padding:13px 16px;font-size:.94rem;font-weight:700;border-bottom:1px solid var(--line)}
.tbl{width:100%;border-collapse:collapse}
.tbl th,.tbl td{padding:9px 16px;text-align:right;font-size:.88rem;border-bottom:1px solid var(--line)}
.tbl th:first-child,.tbl td:first-child{text-align:left;font-weight:600}
.tbl thead th{background:var(--panel-2);font-size:.74rem;color:var(--ink-3);font-weight:700}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl tbody tr:hover{background:var(--sunk)}
.bar{display:inline-block;height:7px;border-radius:99px;background:var(--web);vertical-align:middle}
.chip-ok{color:var(--good);font-weight:700} .chip-work{color:var(--web);font-weight:700} .chip-late{color:var(--danger);font-weight:700}

.loerr{background:rgba(192,57,43,.1);color:var(--danger);border:1px solid rgba(192,57,43,.3);border-radius:var(--r);padding:16px 18px;font-size:.9rem}

/* 分单概览 + 视图切换 */
.overview{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);padding:6px 20px;margin-bottom:16px}
.ov-row{display:flex;align-items:center;gap:12px 26px;flex-wrap:wrap;padding:12px 0}
.ov-row+.ov-row{border-top:1px solid var(--line)}
.ov-day{font-size:.82rem;font-weight:700;color:var(--ink-3);min-width:42px}
.ov-stat{display:flex;align-items:baseline;gap:6px;font-size:.86rem}
.ov-stat b{font-size:1.4rem;font-weight:800;letter-spacing:-.02em}
.ov-stat .lab{color:var(--ink-3)}
.ov-stat.total b{color:var(--ink)}
.ov-stat.new b{color:var(--good)}
.ov-stat.trans b{color:var(--warn)}
.viewtabs{display:inline-flex;gap:4px;background:var(--sunk);border:1px solid var(--line);border-radius:9px;padding:4px;margin-bottom:18px}
.viewtab{border:none;background:transparent;color:var(--ink-2);font-weight:600;font-size:.88rem;padding:7px 18px;border-radius:6px;cursor:pointer}
.viewtab.active{background:var(--web-soft);color:var(--web)}
.viewtab[draggable]{cursor:grab}
.viewtab[draggable]:active{cursor:grabbing}
.viewtab.dragging{opacity:.4}

/* ---------- 设计师工作台 ---------- */
.wb-section{margin-bottom:22px}
.wb-sec-head{display:flex;align-items:center;gap:10px;font-size:.94rem;font-weight:760;color:var(--ink);padding:0 2px 10px;letter-spacing:-.01em}
.wb-sec-head .wb-sec-n{font-size:.72rem;font-weight:700;color:var(--ink-3);background:var(--sunk);border:1px solid var(--line);padding:2px 9px;border-radius:999px}
.wb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.wb-card{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);padding:15px 16px;transition:.14s;display:flex;flex-direction:column;gap:12px}
.wb-card:hover{border-color:var(--web);box-shadow:var(--sh-2);transform:translateY(-1px)}
.wb-name{font-weight:740;font-size:1rem;color:var(--ink)}
.wb-nums{display:flex;gap:14px}
.wb-n{display:flex;flex-direction:column;font-size:1.25rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.wb-n i{font-style:normal;font-size:.66rem;font-weight:600;color:var(--ink-3);margin-top:1px}
.wb-n.work{color:var(--web)} .wb-n.ok{color:var(--good)} .wb-n.tot{color:var(--ink-2)}
.wb-tbl td,.wb-tbl th{text-align:left}
.wb-tbl td.num,.wb-tbl th.num{text-align:right}
.wb-time{color:var(--ink-3);font-size:.82rem;font-variant-numeric:tabular-nums}
.wb-tbl tr.wb-late td{background:rgba(192,57,43,.06)}
.wb-chip{display:inline-block;font-size:.74rem;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--sunk);color:var(--ink-2)}
.wb-chip.work{background:var(--web-soft);color:var(--web)}
.wb-chip.mid{background:var(--warn-soft);color:var(--warn)}
.wb-chip.ok{background:var(--good-soft);color:var(--good)}
.wb-chip.late{background:rgba(192,57,43,.12);color:var(--danger)}

.wb-mode{margin-bottom:10px}
.wb-mode .viewtab{font-weight:700}
.wb-mtbl td,.wb-mtbl th{padding:10px 16px}
.wb-row{cursor:pointer}
.wb-row:hover{background:var(--sunk)}
/* 本月经营宽表:横向滚动 + 首列吸附 + 紧凑 */
.wb-scroll{overflow-x:auto}
.wb-wide{min-width:1120px}
.wb-wide th,.wb-wide td{padding:7px 8px;white-space:nowrap;font-size:.82rem}
.wb-wide thead th{position:sticky;top:0;white-space:normal;line-height:1.18;vertical-align:bottom;font-size:.76rem}
.wb-wide td:first-child,.wb-wide th:first-child{position:sticky;left:0;background:var(--panel);z-index:1;font-weight:600}
.wb-wide tbody tr:hover td:first-child{background:var(--sunk)}
/* 月度对比:每人两行(当月/上月)分组 */
.wb-monthly .mgrp-top>td{border-top:2px solid var(--line-2)}
.wb-monthly .mgrp-bot>td{background:var(--sunk)}
.wb-monthly .mgrp-bot td:first-child{background:var(--sunk)}
.mo-cur{font-weight:700;color:var(--web)}
.mo-prev{color:var(--ink-3)}
/* 经营看板·经营指标 */
.metric-bar{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.metric-total>td{font-weight:800;background:var(--web-soft)}
.metric-total>td:first-child{background:var(--web-soft);color:var(--web)}
/* 维度标题突出:大字 + 主题绿 + 左侧色条 */
.metric-grp td{background:var(--web-soft);color:var(--web);font-weight:800;font-size:.92rem;padding:9px 14px 9px 12px;border-left:4px solid var(--web);letter-spacing:.02em}
.wb-wide .metric-grp td{position:static}
.mg-note{font-weight:500;color:var(--ink-3);font-size:.78rem;letter-spacing:0}
/* 等级×店铺:等级小计行(加粗)+ 店铺明细行(缩进淡色) */
.metric-sub>td{font-weight:700;background:var(--sunk)}
.metric-sub>td:first-child{background:var(--sunk)}
.metric-nest>td:first-child{color:var(--ink-3);font-weight:500;padding-left:20px}
/* 小板块:卡片 + 子tab条 + 冻结吸顶(表头+首列) */
.metric-card{margin-bottom:16px;padding:0;overflow:hidden}
.metric-subbar{display:flex;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid var(--line);background:var(--panel-2);flex-wrap:wrap}
.metric-note{color:var(--ink-3);font-size:.76rem}
.metric-freeze{max-height:66vh;overflow:auto}
.metric-freeze thead th{position:sticky;top:0;z-index:3;background:var(--panel);box-shadow:0 1px 0 var(--line-2)}
.metric-freeze td:first-child,.metric-freeze th:first-child{position:sticky;left:0;z-index:2;background:var(--panel)}
.metric-freeze thead th:first-child{z-index:4}
.metric-freeze .metric-total>td:first-child{background:var(--web-soft)}
.metric-freeze .metric-sub>td:first-child{background:var(--sunk)}
/* 样机效果对比表:有样机(绿)/无样机(灰)分组配色 */
.mockup-tbl{min-width:760px}
.mockup-tbl th.grp-y,.mockup-tbl td.col-y{background:var(--web-soft)}
.mockup-tbl th.grp-n,.mockup-tbl td.col-n{background:var(--sunk)}
.mockup-tbl thead th{font-size:.8rem}
/* 自定义查询栏 */
.board-tabs{margin-bottom:18px}
.board-tabs .viewtab{font-size:.95rem;padding:9px 22px;font-weight:700}
.qbar{display:flex;align-items:center;gap:9px 14px;flex-wrap:wrap}
.qf{display:flex;align-items:center;gap:5px;font-size:.83rem;color:var(--ink-2);white-space:nowrap}
.qf input,.qf select{font-size:.85rem;padding:6px 9px;border:1px solid var(--line-2);border-radius:7px;background:var(--sunk);color:var(--ink);outline:none}
.qf input:focus,.qf select:focus{border-color:var(--web)}
/* 富列宽表(经营指标/查询,17列)更宽 + 待发货可点 */
.wb-mtbl.wb-wide{min-width:0;width:100%}
.wb-mtbl.wb-wide thead th.num{max-width:70px}
/* 没用样机的设计师名单 */
.ppl-head{padding:14px 16px 6px;border-top:1px solid var(--line)}
.ppl-tbl th,.ppl-tbl td{padding:7px 14px}
.ppl-tbl thead th{position:sticky;top:0;background:var(--panel);z-index:2}
/* 指标表列头菜单(升序/降序/筛选/隐藏) */
.col-caret{color:var(--ink-3);font-size:.66rem;user-select:none}
.wb-mtbl thead th:hover{background:var(--web-soft)}
.wb-mtbl thead th:hover .col-caret{color:var(--web)}
.col-menu{position:fixed;z-index:9500;background:var(--panel);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 12px 34px rgba(0,0,0,.28);padding:5px;min-width:196px;display:flex;flex-direction:column}
.col-menu .cm-btn{border:none;background:transparent;text-align:left;padding:8px 12px;border-radius:6px;font-size:.86rem;color:var(--ink);cursor:pointer;white-space:nowrap}
.col-menu .cm-btn:hover{background:var(--web-soft);color:var(--web)}
.cm-hd{padding:5px 10px 6px;font-weight:700;color:var(--web);font-size:.82rem;border-bottom:1px solid var(--line);margin-bottom:3px}
.cm-sep{height:1px;background:var(--line);margin:4px 2px}
.cm-flt{padding:4px 8px;display:flex;flex-direction:column;gap:6px}
.cm-ops{display:flex;gap:4px}
.cm-op{flex:1;border:1px solid var(--line-2);background:var(--sunk);border-radius:6px;padding:5px 0;font-size:.78rem;cursor:pointer;color:var(--ink-2)}
.cm-op.on{background:var(--web);color:#fff;border-color:var(--web)}
.cm-inp{border:1px solid var(--line-2);border-radius:6px;padding:7px 9px;font-size:.85rem;outline:none;width:100%;box-sizing:border-box;background:var(--panel);color:var(--ink)}
.cm-inp:focus{border-color:var(--web)}
.cm-clear{color:var(--ink-3);font-size:.8rem;padding:5px 12px!important}
.col-filtered{color:var(--web)!important;background:var(--web-soft)}
.col-filtered .col-caret{color:var(--web)}
/* 找组长/找组员 搜索框 */
.ldr-search{border:1px solid var(--line-2);border-radius:8px;padding:6px 11px;font-size:.85rem;outline:none;background:var(--panel);color:var(--ink);min-width:150px}
.ldr-search:focus{border-color:var(--web)}
/* 分区折叠:默认合并,点标题展开 */
.grp-hidden{display:none!important}
.grp-caret{color:var(--web);font-size:.72rem;user-select:none}
.metric-grp td:hover{filter:brightness(.97)}
/* 趋势线 SVG */
.tc-wrap{padding:12px 14px 6px;overflow-x:auto}
.tc-svg{width:100%;min-width:560px;height:auto;display:block}
.tc-grid{stroke:var(--line);stroke-width:1}
.tc-axis{stroke:var(--line-2);stroke-width:1}
.tc-ylbl{fill:var(--ink-3);font-size:11px;text-anchor:end}
.tc-xlbl{fill:var(--ink-3);font-size:11px;text-anchor:middle}
.tc-legend{display:flex;flex-wrap:wrap;gap:12px;padding:4px 16px 14px;font-size:.8rem;color:var(--ink-2)}
.tc-legend span{display:inline-flex;align-items:center;gap:5px}
.tc-legend i{width:13px;height:3px;border-radius:2px;display:inline-block}
/* 经营总看板:7指标·数+金额 */
.ov-tbl{width:100%;min-width:820px}
.ov-tbl th,.ov-tbl td{padding:9px 12px}
.ov-tbl thead th{position:sticky;top:0;background:var(--panel);z-index:2;font-size:.82rem;white-space:normal;line-height:1.2;vertical-align:bottom}
.ov-tbl td:first-child,.ov-tbl th:first-child{position:sticky;left:0;background:var(--panel);z-index:1;font-weight:600}
.ov-cell .ov-n{font-weight:800;font-size:.98rem}
.ov-cell .ov-a{font-size:.76rem;color:var(--ink-3);font-variant-numeric:tabular-nums}
.ov-总接单 .ov-n{color:var(--ink-2)}
.ov-转单 .ov-n{color:#D98A00}
.ov-净接单 .ov-n{color:var(--web)}
.ov-退款 .ov-n{color:var(--danger)}
.ov-定稿 .ov-n{color:var(--good)}
.ov-待完结 .ov-n{color:var(--web)}
.ov-定稿后退款 .ov-n{color:var(--danger)}
.ov-接单 .ov-n{color:var(--ink-2)}
.ov-定退比 .ov-n{color:var(--good)}
.ldr-off{background:rgba(120,120,120,.06)}
th.ldr-off{background:rgba(120,120,120,.1)}
.ldr-badge{display:inline-block;margin-left:3px;padding:0 4px;font-size:.6rem;font-weight:700;color:#8a6d00;background:#fff3d6;border-radius:3px;vertical-align:middle}
.ldr-hasmem{cursor:pointer}
.ldr-hasmem:hover>td:first-child{color:var(--web)}
.ldr-tog{display:inline-block;width:14px;color:var(--web);font-weight:700}
.ldr-cnt{margin-left:6px;font-size:.66rem;color:var(--ink-3);background:var(--web-soft);padding:0 5px;border-radius:8px}
.ov-tbl .ldr-mem>td{background:rgba(60,140,90,.045);font-size:.82rem}
.ov-tbl .ldr-mem>td:first-child{padding-left:20px;color:var(--ink-2)}
.ldr-ind{color:var(--ink-3);margin-right:5px}
.ldr-mem .ov-cell .ov-n{font-weight:600;font-size:.86rem}
.ldr-drill{cursor:pointer}
.ldr-drill:hover{background:rgba(60,140,90,.12);outline:1px solid var(--web)}
.ldr-drill .ov-n{text-decoration:underline dotted;text-underline-offset:2px}
.sh-bar{display:flex;align-items:center;gap:10px;margin:3px 0}
.sh-bar .sh-h{width:52px;text-align:right;font-size:.78rem;color:var(--ink-3);font-variant-numeric:tabular-nums}
.sh-bar .sh-track{flex:1;height:16px;background:var(--web-soft);border-radius:8px;overflow:hidden}
.sh-bar .sh-fill{height:100%;background:var(--web);border-radius:8px;min-width:2px;transition:width .2s}
.sh-bar .sh-fill.pk{background:var(--good)}
.sh-bar .sh-c{width:26px;font-weight:700;font-size:.85rem;color:var(--ink-2);font-variant-numeric:tabular-nums}
.sh-on{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.76rem;font-weight:600}
.sh-on.ok{background:rgba(22,163,74,.12);color:var(--good)}
.sh-on.off{background:rgba(220,38,38,.10);color:#dc2626}
.sh-on.wait{background:var(--web-soft);color:var(--ink-3)}
.sh-why{margin-left:6px;font-size:.74rem;color:var(--ink-3)}
/* 排班·纵向堆叠柱状(分等级) */
.shv-wrap{display:flex;align-items:flex-end;gap:6px;padding:6px 0 2px;overflow-x:auto}
.shv-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1 0 34px;min-width:30px}
.shv-n{font-size:.72rem;font-weight:700;color:var(--ink-2);height:16px;font-variant-numeric:tabular-nums}
.shv-stack{display:flex;flex-direction:column;justify-content:flex-end;width:24px;height:180px;border-radius:4px;overflow:hidden;background:var(--web-soft)}
.shv-seg{width:100%}
.shv-h{margin-top:5px;font-size:.72rem;color:var(--ink-3);font-variant-numeric:tabular-nums}
.shv-legend{display:flex;gap:14px;flex-wrap:wrap}
.shv-lg{font-size:.8rem;color:var(--ink-2);display:inline-flex;align-items:center;gap:5px}
.shv-lg i{width:11px;height:11px;border-radius:3px;display:inline-block}
.shv-lg b{font-variant-numeric:tabular-nums}
.shv-tag{display:inline-block;padding:1px 8px;border-radius:9px;font-size:.76rem;font-weight:600}
.sh-filters{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.sh-flabel{font-size:.8rem;color:var(--ink-3);margin-right:2px}
.sh-chip{border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:14px;padding:2px 11px;font-size:.8rem;cursor:pointer;transition:.12s}
.sh-chip:hover{border-color:var(--web)}
.sh-chip.on{background:var(--web);border-color:var(--web);color:#fff}
.sh-sort:hover{color:var(--web)}
.sh-ed-lv,.sh-ed-on{border:1px solid var(--line);border-radius:6px;padding:2px 6px;font-size:.82rem;background:var(--panel);color:var(--ink-1);cursor:pointer}
.sh-ed-lv:hover,.sh-ed-on:hover{border-color:var(--web)}
.sh-timecell{cursor:pointer;border-bottom:1px dashed var(--line)}
.sh-timecell:hover{color:var(--web);border-color:var(--web)}
.sh-pen{margin-left:5px;font-size:.72rem;color:var(--ink-3);cursor:pointer}
.sh-timeed{display:inline-flex;align-items:center;gap:4px}
.sh-timeed input[type=time]{border:1px solid var(--web);border-radius:6px;padding:1px 4px;font-size:.8rem}
.sh-ok,.sh-x{border:none;border-radius:6px;padding:1px 7px;cursor:pointer;font-size:.85rem}
.sh-ok{background:var(--web);color:#fff}
.sh-x{background:var(--web-soft);color:var(--ink-2)}
.shv-cap{font-size:.78rem;color:var(--ink-3);margin:0 0 6px}
.shv-cap b{color:var(--ink-2)}
.shv-ylab{writing-mode:vertical-rl;transform:rotate(180deg);font-size:.72rem;color:var(--ink-3);display:flex;align-items:center;justify-content:center;padding-bottom:22px}
.shv-xlab{text-align:center;font-size:.72rem;color:var(--ink-3);margin-top:2px}
.sh-open{cursor:pointer;color:var(--web);font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-open:hover{text-decoration:underline}
.sh-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1000;align-items:center;justify-content:center}
.sh-dlg{background:var(--panel);border-radius:12px;width:min(760px,92vw);max-height:84vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.sh-dlg-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-size:1rem}
.sh-dlg-x{cursor:pointer;color:var(--ink-3);font-size:1.1rem;padding:0 4px}
.sh-dlg-x:hover{color:var(--ink-1)}
.sh-dlg-b{padding:14px 18px;overflow:auto}
.sh-st{display:inline-block;padding:1px 9px;border-radius:11px;font-size:.76rem;font-weight:600;cursor:pointer}
.sh-st.on{background:rgba(22,163,74,.14);color:var(--good)}
.sh-st.off{background:rgba(220,38,38,.10);color:#dc2626}
.sh-st.done{background:var(--panel-2);color:var(--ink-2)}
.sh-st.wait{background:var(--panel-2);color:var(--ink-3)}
.sh-st:hover{outline:1px solid var(--web)}
.btn-sm.on{background:var(--web);border-color:var(--web);color:#fff}
.tk-tbl th,.tk-tbl td{white-space:nowrap;font-size:.82rem;padding:7px 10px;border-right:1px solid var(--line)}
.tk-tbl th:last-child,.tk-tbl td:last-child{border-right:0}
.resizable{table-layout:fixed}
.resizable td{overflow:hidden;text-overflow:ellipsis}
.pk-tbl th,.pk-tbl td,.sf-tbl th,.sf-tbl td{border-right:1px solid var(--line)}
.pk-tbl th:last-child,.pk-tbl td:last-child,.sf-tbl th:last-child,.sf-tbl td:last-child{border-right:0}
.col-rz{position:absolute;top:0;right:-3px;width:8px;height:100%;cursor:col-resize;z-index:9}
.col-rz:hover{background:var(--web)}
.tk-th{cursor:pointer;user-select:none}
.tk-th:hover{color:var(--web)}
.tk-caret{color:var(--ink-3);font-size:.7rem}
.tk-th:hover .tk-caret{color:var(--web)}
.tk-fdot{color:var(--web);font-size:.6rem}
.tk-menu{position:fixed;z-index:2000;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.22);padding:5px;min-width:168px}
.tk-mi{padding:8px 12px;border-radius:6px;font-size:.85rem;color:var(--ink-1);cursor:pointer;white-space:nowrap}
.tk-mi:hover{background:var(--web-soft);color:var(--web)}
.tk-topscroll{overflow-x:auto;overflow-y:hidden;margin-bottom:2px}
.tk-topscroll-inner{height:1px}
.tk-scroll{max-height:66vh;overflow:auto;position:relative}
.tk-tbl thead th{position:sticky;top:0;z-index:5;background:var(--panel-2)}
.wb-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;border-bottom:1px solid var(--line);margin-bottom:2px}
.wb-tab{border:none;background:none;padding:9px 13px;font-size:.9rem;color:var(--ink-2);cursor:pointer;border-bottom:2px solid transparent;font-weight:600;white-space:nowrap}
.wb-tab:hover{color:var(--web)}
.wb-tab.active{color:var(--web);border-bottom-color:var(--web)}
.wb-tab.wb-drag{opacity:.4}
.wb-tab.wb-over{background:var(--panel-2);box-shadow:inset 3px 0 0 var(--web)}
/* 点开订单·全字段详情弹窗 */
.od-row{cursor:pointer}
.od-row:hover>td{background:var(--panel-2)!important}
/* 组长视角:全部/我的/组员 切换 + 自己名下单高亮 */
.tk-ownseg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.tk-ownseg .oseg{border:none;border-right:1px solid var(--line);background:var(--panel);color:var(--ink-2);font-size:.82rem;font-weight:700;padding:6px 14px;cursor:pointer}
.tk-ownseg .oseg:last-child{border-right:0}
.tk-ownseg .oseg.on{background:var(--web);color:#fff}
/* 自己名下单整行高亮:合成不透明色(冻结/序号/操作列有inline背景+sticky,须!important且不透明防穿透) */
.tk-tbl tr.tk-mine>td{background:linear-gradient(var(--web-soft),var(--web-soft)),var(--panel)!important}
.tk-tbl tr.tk-mine:hover>td{background:linear-gradient(var(--web-soft),var(--web-soft)),var(--panel-2)!important}
.tk-metag{display:inline-block;font-size:.66rem;font-weight:800;color:#fff;background:var(--web);border-radius:4px;padding:0 5px;vertical-align:middle}
.tk-own{font-size:.66rem;font-weight:700;color:var(--ink-2);margin-top:2px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.od-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px}
.od-panel{background:var(--panel);border-radius:14px;width:min(1080px,96vw);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3);overflow:hidden}
.od-head{display:flex;align-items:center;gap:14px;padding:15px 22px;border-bottom:1px solid var(--line);font-size:1.05rem}
.od-toggle{font-size:.85rem;color:var(--ink-2);font-weight:500;cursor:pointer;display:flex;align-items:center;gap:5px;user-select:none}
.od-x{cursor:pointer;color:var(--ink-3);font-size:1.1rem;padding:2px 7px;border-radius:6px}
.od-x:hover{background:var(--panel-2);color:var(--ink)}
.od-body{overflow:auto;padding:6px 22px 22px}
.od-sec{margin-top:18px}
.od-sec-t{font-weight:700;color:var(--web);font-size:.96rem;padding:6px 0 7px;border-bottom:2px solid var(--web);margin-bottom:12px;display:inline-block}
.od-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:11px 20px}
.od-f{min-width:0}
.od-fn{font-size:.77rem;color:var(--ink-3);margin-bottom:3px}
.od-fv{font-size:.9rem;color:var(--ink);white-space:pre-wrap;word-break:break-word;line-height:1.42}
.od-fv.od-empty{color:var(--ink-3)}
.od-f-wide{grid-column:1/-1}
.od-atts{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.od-att{display:block;width:118px;text-decoration:none;color:var(--ink-2);border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel-2)}
.od-att img{display:block;width:118px;height:118px;object-fit:cover;background:#fff}
.od-att>span{display:block;padding:4px 6px;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.od-att.od-att-f{width:auto;height:auto;padding:7px 12px;font-size:.85rem;color:var(--web);align-self:flex-start}
.tk-thumb{height:32px;max-width:72px;object-fit:cover;border-radius:4px;vertical-align:middle;cursor:zoom-in;border:1px solid var(--line);margin:1px 4px 1px 0}
.tk-thumb:hover{box-shadow:0 0 0 2px var(--web)}
.md-pill{display:inline-block;padding:1px 9px;border-radius:10px;font-size:.76rem;line-height:1.5;white-space:nowrap;font-weight:500}
.file-dl{display:inline-block;font-size:.76rem;color:var(--web);text-decoration:none;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.file-dl:hover{text-decoration:underline}
.img-lb{position:fixed;inset:0;background:rgba(0,0,0,.82);z-index:1100;display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:20px}
.img-lb img{max-width:94vw;max-height:94vh;object-fit:contain;border-radius:6px;box-shadow:0 10px 50px rgba(0,0,0,.55);cursor:default}
.img-lb-x{position:fixed;top:14px;right:22px;color:#fff;font-size:1.7rem;cursor:pointer;line-height:1}
.act-cell{display:flex;flex-direction:column;gap:4px;align-items:stretch}
.mn-fn{font-size:.78rem;color:var(--ink-3);margin:7px 0 2px}
.mn-ta{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:.9rem;font-family:inherit;line-height:1.45;resize:vertical;background:var(--panel);color:var(--ink)}
.mn-ta:focus{outline:none;border-color:var(--web)}
.mn-grp{border:1px solid var(--line);border-radius:8px;padding:8px 12px 10px;margin-bottom:10px}
.tk-op{min-width:92px;width:92px;text-align:center;padding:4px 6px!important}
.tk-op .tk-mm{padding:3px 8px;font-size:.8rem;white-space:nowrap}
/* 案例库 · 读阿飞选图器 */
.cs-l2b{color:var(--ink-3);flex:none;margin-left:6px}
.cs-pg{color:var(--ink-3);font-size:.74rem;font-weight:400;margin-left:4px}
.cs-combos{display:flex;flex-direction:column;gap:14px}
.cs-combo{border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:12px 14px}
.cs-combo-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cs-combo-t{font-weight:700;font-size:.95rem;color:var(--ink)}
.cs-combo-t::before{content:'';display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--web);margin-right:8px;vertical-align:middle}
/* 组合标题·点击改名(仅经理) */
.cs-t-edit{cursor:text;border-radius:6px;padding:2px 6px;margin:-2px -6px;transition:background .12s}
.cs-t-edit:hover{background:var(--web-soft)}
.cs-t-pen{font-size:.78rem;color:var(--ink-3);margin-left:6px;opacity:.6}
.cs-t-edit:hover .cs-t-pen{opacity:1;color:var(--web)}
.cs-t-in{font-weight:700;font-size:.95rem;color:var(--ink);border:1px solid var(--web);border-radius:6px;padding:3px 8px;min-width:220px;background:var(--panel)}
.cs-t-ok,.cs-t-cancel{font-size:.8rem;padding:3px 10px;margin-left:6px;border:1px solid var(--line);border-radius:6px;cursor:pointer;background:var(--panel);color:var(--ink-2)}
.cs-t-ok{background:var(--web);color:#fff;border-color:var(--web)}
.cs-add,.cs-addrep,.cs-addvar{border:1px solid var(--web);background:transparent;color:var(--web);border-radius:6px;padding:3px 12px;font-size:.8rem;cursor:pointer;font-weight:600;white-space:nowrap}
.cs-add:hover,.cs-addrep:hover,.cs-addvar:hover{background:var(--web);color:#fff}
.cs-th{position:relative;width:96px;height:96px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}
.cs-th img{width:100%;height:100%;object-fit:contain;cursor:zoom-in}
.cs-rm,.cs-rm-rep,.cs-rm-var{position:absolute;top:2px;right:2px;width:18px;height:18px;line-height:16px;text-align:center;border-radius:50%;background:rgba(220,38,38,.9);color:#fff;font-size:.7rem;cursor:pointer;opacity:0;transition:opacity .12s}
.cs-th:hover .cs-rm,.cs-th:hover .cs-rm-rep,.cs-th:hover .cs-rm-var{opacity:1}
.cs-empty{color:var(--ink-3);font-size:.82rem;padding:8px 2px}
/* 代表图 → 变体组 嵌套 */
.cs-reps{display:flex;flex-direction:column;gap:10px}
.cs-rep{display:flex;gap:14px;border-top:1px dashed var(--line);padding-top:10px}
.cs-rep:first-child{border-top:none;padding-top:0}
.cs-rep-main{flex:none;display:flex;flex-direction:column;align-items:center;gap:3px}
.cs-repth{width:120px;height:120px;border:2px solid #0e7a5f}
.cs-rep-cap{font-size:.72rem;color:#0e7a5f;font-weight:600}
.cs-rep-vars{flex:1;min-width:0;border-left:1px solid var(--line);padding-left:14px}
.cs-var-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;font-size:.82rem;color:#8a5a13}
.cs-var-ths{display:flex;flex-wrap:wrap;gap:8px}
.cs-vth{width:84px;height:84px}
/* 客户选图管理台 */
.pk-sel{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:.9rem;background:var(--panel);color:var(--ink);font-family:inherit}
.pk-tbl{width:100%;border-collapse:collapse;font-size:.9rem;min-width:640px}
.pk-tbl th{text-align:left;color:var(--ink-3);font-weight:600;font-size:.8rem;padding:6px 10px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2;background:var(--panel-2)}
.pk-tbl td{padding:9px 10px;border-bottom:1px solid var(--line)}
.pk-done{color:#0e7a5f;font-weight:600}
.pk-wait{color:#c9792e}
.pk-sub{color:var(--ink-3);font-size:.78rem}
.pk-des-head{background:var(--panel-2,#eef2f0);border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:.9rem;line-height:1.9}
.pk-kv{display:inline-block;margin-right:16px;color:var(--ink-2)}
.pk-kv b{color:var(--ink)}
.pk-link{background:var(--accent-soft,#e3f4f0);border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:.9rem;line-height:1.9}
.pk-url{font-family:ui-monospace,Consolas,monospace;color:var(--web);word-break:break-all}
.pk-stats .pk-period{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pk-pd{border:1px solid var(--line-2);background:var(--panel);color:var(--ink-2);border-radius:7px;padding:5px 12px;font-size:.82rem;font-weight:600;cursor:pointer;transition:.12s}
.pk-pd:hover{border-color:var(--web);color:var(--web)}
.pk-pd.on{background:var(--web-soft);color:var(--web);border-color:var(--web-line)}
.pk-dt{font-size:.8rem;padding:4px 8px;border:1px solid var(--line-2);border-radius:7px;background:var(--panel);color:var(--ink)}
.pk-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.pk-stat{background:var(--sunk);border:1px solid var(--line);border-radius:11px;padding:14px 12px;text-align:center;display:flex;flex-direction:column;gap:3px;justify-content:center}
.pk-stat-hl{background:var(--web-soft);border-color:var(--web-line)}
.pk-stat-n{font-size:1.72rem;font-weight:800;line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums}
.pk-stat-hl .pk-stat-n{color:var(--web)}
.pk-stat-bad{background:rgba(192,57,43,.06);border-color:rgba(192,57,43,.25)}
.pk-stat-bad .pk-stat-n{color:#C0392B}
.pk-stat-l{font-size:.82rem;color:var(--ink-2);font-weight:600}
.pk-stat-x{font-size:.72rem;color:var(--ink-3)}
/* 素材库 */
.mat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.mat-card{border:1px solid var(--line);border-radius:10px;background:var(--panel);display:flex;flex-direction:column}
.mat-img{height:150px;background:#fff;overflow:hidden;border-radius:10px 10px 0 0}
.mat-img img{width:100%;height:150px;object-fit:contain;cursor:zoom-in;display:block}
.mat-ops{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px 8px;border-top:1px solid var(--line)}
.mat-l2{min-width:0;border:1px solid var(--line);border-radius:6px;padding:3px 5px;font-size:.76rem;background:var(--panel);color:var(--ink);font-family:inherit}
.mat-del{padding:3px 8px;line-height:1.2}
.mat-dl{padding:3px 4px;line-height:1.2;text-decoration:none;white-space:nowrap;text-align:center}
.mat-eps{padding:3px 4px;line-height:1.2;white-space:nowrap;color:var(--web);font-weight:600;text-align:center}
.mat-brief{margin:10px 0;padding:12px 14px}
.mat-brief-h{font-weight:600;margin-bottom:8px;color:var(--ink)}
.mat-brief-nums{display:flex;gap:18px;flex-wrap:wrap;font-size:.9rem;color:var(--ink-2);margin-bottom:6px}
.mat-brief-nums b{color:var(--web);font-size:1.05rem}
.mat-brief-sub{font-size:.8rem;color:var(--ink-3);margin-bottom:8px}
.mat-brief-tbl{border-collapse:collapse;font-size:.82rem}
.mat-brief-tbl th,.mat-brief-tbl td{border:1px solid var(--line);padding:4px 12px;text-align:right;white-space:nowrap}
.mat-brief-tbl th:first-child,.mat-brief-tbl td:first-child{text-align:left}
.mat-brief-tbl thead th{background:var(--panel-2)}
/* 补稿图 粘贴/拖拽/选文件 弹窗 */
.pk-dmask{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:9999}
.pk-dbox{background:var(--panel);border-radius:12px;padding:18px;width:min(420px,92vw);box-shadow:0 10px 40px rgba(0,0,0,.3);outline:none}
.pk-dh{font-weight:600;margin-bottom:12px;color:var(--ink)}
.pk-dzone{border:2px dashed var(--line);border-radius:10px;padding:26px 14px;text-align:center;color:var(--ink-2);font-size:.9rem;background:var(--panel-2)}
.pk-dzone.over{border-color:var(--web);background:rgba(0,120,212,.06)}
.pk-dsub{font-size:.78rem;color:var(--ink-3);margin-top:6px}
.pk-drow{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
.pk-dmsg{font-size:.82rem;color:var(--web);margin-top:8px;min-height:18px}
/* 结果一览:客户ID后的「复制」小按钮 */
.pk-cid{margin-left:6px;padding:1px 6px;font-size:.7rem;line-height:1.5;border:1px solid var(--line);border-radius:4px;background:var(--panel-2);color:var(--ink-2);cursor:pointer;vertical-align:middle;white-space:nowrap}
.pk-cid:hover{border-color:var(--web);color:var(--web)}
.pk-cid.ok{border-color:var(--web);color:var(--web);background:rgba(0,120,212,.08)}
/* 结果一览:经理查单备注列(点进编辑) */
.pk-note-cell{min-width:150px;vertical-align:top;overflow:visible;white-space:normal;text-overflow:clip}
.pk-note-view{min-height:34px;padding:5px 8px;border:1px dashed transparent;border-radius:6px;cursor:text;font-size:.84rem;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.pk-note-view:hover{border-color:var(--line);background:var(--panel-2)}
.pk-note-ph{color:var(--ink-3)}
.pk-note-ta{width:100%;min-width:150px;box-sizing:border-box;resize:vertical;font-size:.84rem;padding:6px 8px;border:1px solid var(--web);border-radius:6px;background:var(--panel);color:var(--ink);font-family:inherit}
.pk-note-row{display:flex;gap:6px;margin-top:6px}
/* 稿件图:多张缩略图角标✕ + 弹窗攒图暂存区 */
.pk-dwrap{position:relative;display:inline-block;line-height:0}
.pk-thx{position:absolute;top:-2px;right:-2px;width:16px;height:16px;line-height:14px;padding:0;border:none;border-radius:50%;background:rgba(192,57,43,.92);color:#fff;font-size:12px;text-align:center;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.35);z-index:2}
.pk-thx:hover{background:#C0392B}
.pk-dstage{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pk-dstage:empty{margin-top:0}
.pk-swrap{position:relative;display:inline-block;line-height:0}
.pk-sth{width:64px;height:64px;object-fit:contain;background:var(--panel-2);border:1px solid var(--line);border-radius:6px}
/* 补选弹窗图库 */
.cs-libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-auto-rows:248px;gap:14px;align-content:start}
.cs-libcard{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--panel);cursor:pointer;display:flex;flex-direction:column}
.cs-libcard:hover{border-color:var(--web);box-shadow:0 2px 10px rgba(0,0,0,.1)}
.cs-libimg{position:relative;flex:0 0 210px;height:210px;background:#fff;overflow:hidden}
.cs-libimg img{display:block;width:100%;height:100%;object-fit:contain}
.cs-zoom{position:absolute;top:3px;right:3px;width:20px;height:20px;line-height:18px;text-align:center;border-radius:5px;background:rgba(0,0,0,.5);color:#fff;font-size:.7rem;opacity:0;transition:opacity .12s}
.cs-libcard:hover .cs-zoom{opacity:1}
.cs-libb{font-size:.72rem;color:var(--ink-2);padding:5px 7px;display:flex;justify-content:space-between;gap:4px;min-width:0;align-items:center}
.cs-libb>:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 新建行业组 */
.cs-l2pick{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;max-height:46vh;overflow:auto}
.cs-l2chk{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:.85rem;cursor:pointer;color:var(--ink)}
.cs-l2chk span{margin-left:auto;color:var(--ink-3);font-size:.76rem}
.cs-l2chk.used{opacity:.5;cursor:not-allowed}
.cs-l2chk:has(input:checked){border-color:var(--web);background:color-mix(in srgb,var(--web) 8%,transparent)}
.cs-allbtn{border:1px solid var(--web);background:transparent;color:var(--web);border-radius:6px;padding:4px 12px;font-size:.82rem;cursor:pointer;font-weight:600;white-space:nowrap}
.cs-allbtn.on{background:var(--web);color:#fff}
/* 候选图大图预览+加入 */
.cs-pvmask{position:fixed;inset:0;background:rgba(0,0,0,.62);z-index:2300;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}
.cs-pv{background:var(--panel);border-radius:12px;overflow:hidden;max-width:min(720px,94vw);max-height:90vh;display:flex;flex-direction:column;cursor:default;box-shadow:0 24px 70px rgba(0,0,0,.5)}
.cs-pv-img{background:#fff;display:grid;place-items:center;overflow:auto;padding:14px;flex:1;min-height:0}
.cs-pv-img img{max-width:100%;max-height:70vh;object-fit:contain}
.cs-pv-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line)}
.cs-pv-name{font-size:.8rem;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.cs-pv-bar .btn-sm{padding:6px 16px;font-size:.9rem}
.up-ro{display:flex;flex-wrap:wrap;gap:5px 24px;padding:8px 0}
.up-ro>div{display:flex;gap:6px;font-size:.85rem}
.up-ro>div>span{color:var(--ink-3)}
.up-ro>div>b{color:var(--ink);font-weight:600}
.up-edit{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;padding:8px 0 10px;border-top:1px solid var(--line)}
.up-ef{display:flex;flex-direction:column;gap:3px;min-width:0}
.up-ef-wide{grid-column:1/-1}
.up-ef>label{font-size:.78rem;color:var(--ink-3)}
.up-in{border:1px solid var(--line);border-radius:6px;padding:6px 9px;font-size:.88rem;background:var(--panel);color:var(--ink);font-family:inherit;width:100%;box-sizing:border-box}
.up-in:focus{outline:none;border-color:var(--web)}
.up-drop{display:flex;align-items:center;justify-content:center;min-height:120px;border:2px dashed var(--line);border-radius:10px;cursor:pointer;color:var(--ink-3);text-align:center;padding:12px;flex-direction:column;gap:8px}
.up-drop:hover,.up-drop.over{border-color:var(--web);color:var(--web);background:var(--web-soft)}
.act-run{background:var(--web);color:#fff;border-color:var(--web)}
.act-run:hover{filter:brightness(1.05)}
.tk-fmask{position:fixed;inset:0;background:rgba(0,0,0,.28);z-index:2100;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.tk-fpanel{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.3);width:min(640px,94vw);padding:16px 18px}
.tk-fp-h{display:flex;align-items:center;gap:14px;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:12px}
.tk-fp-h b{font-size:1rem}
.tk-fp-join{font-size:.85rem;color:var(--ink-2)}
.tk-fp-x{margin-left:auto;cursor:pointer;color:var(--ink-3);font-size:1.1rem}
.tk-fp-x:hover{color:var(--ink-1)}
.tk-fp-body{display:flex;flex-direction:column;gap:8px;max-height:44vh;overflow:auto}
.fc-row{display:flex;align-items:center;gap:8px}
.fc-when{width:26px;text-align:center;color:var(--ink-3);font-size:.85rem}
.fc-novalue{color:var(--ink-3);font-size:.85rem;width:190px}
.fc-del{cursor:pointer;color:var(--ink-3);padding:0 4px}
.fc-del:hover{color:var(--danger,#dc2626)}
.tk-fp-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.tk-page{font-size:.85rem;color:var(--ink-2)}
.btn-sm:disabled{opacity:.4;cursor:not-allowed}
.sh-ed-on2{margin-left:6px;border:1px solid var(--line);border-radius:6px;padding:1px 3px;font-size:.72rem;color:var(--ink-3);background:var(--panel);cursor:pointer}
.sh-ed-on2:hover{border-color:var(--web)}
.ov-tbl .metric-total>td{background:var(--web-soft)}
.ov-tbl .metric-total>td:first-child{background:var(--web-soft);color:var(--web)}
a.ps-drill{color:var(--web);font-weight:800;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
a.ps-drill:hover{color:var(--danger)}
/* 漏发货钻取弹窗 */
.ps-modal-back{position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:24px}
.ps-modal{background:var(--panel);border:1px solid var(--line-2);border-radius:14px;width:min(1120px,95vw);max-width:min(1120px,95vw);max-height:88vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.35);overflow:hidden}
.ps-mbody{min-height:340px}
.ps-mhead{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line);font-size:1.02rem}
.ps-close{border:none;background:var(--sunk);color:var(--ink-2);width:30px;height:30px;border-radius:8px;font-size:1rem;cursor:pointer}
.ps-close:hover{background:var(--line-2);color:var(--ink)}
.ps-msub{padding:8px 20px;color:var(--ink-3);font-size:.78rem;border-bottom:1px solid var(--line)}
.ps-mbody{overflow:auto;padding:6px 10px 14px}
.ps-mbody table{width:100%}
.ps-mbody th{position:sticky;top:0;background:var(--panel);z-index:1}

/* ---------- 内嵌 iframe(客户选图等)---------- */
.embed-frame{width:100%;height:calc(100vh - 150px);min-height:520px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);box-shadow:var(--sh-1)}

/* ---------- 权限管理 ---------- */
.pa-wrap{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:start}
.pa-left{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px;box-shadow:var(--sh-1)}
.pa-right{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh-1);min-width:0}
.pa-h{font-size:.8rem;font-weight:700;color:var(--ink-3);margin:0 0 8px;letter-spacing:.02em}
.pa-sec{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.pa-sec:last-child{border-bottom:none;margin-bottom:0}
.pa-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 12px}
.pa-chk{display:flex;align-items:center;gap:6px;font-size:.88rem;color:var(--ink-2);cursor:pointer}
.pa-chk input{flex:none}
.pa-actgrp{margin-bottom:8px}
.pa-input{border:1px solid var(--line-2);border-radius:8px;padding:8px 11px;font-size:.9rem;background:var(--panel);color:var(--ink-1);width:100%}
.pa-input:disabled{background:var(--sunk);color:var(--ink-3)}
.pa-del:hover{filter:brightness(1.2)}
@media(max-width:760px){.pa-wrap{grid-template-columns:1fr}}
/* 案例库·代表图说明(客户/设计师两段) */
.cs-rep-desc{display:flex;flex-direction:column;gap:6px;padding:6px 8px;min-width:200px;flex:1}
.cs-desc-l{display:flex;flex-direction:column;gap:3px;font-size:.72rem;color:var(--ink-3);font-weight:600}
.cs-desc{border:1px solid var(--line-2);border-radius:7px;padding:6px 8px;font-size:.82rem;line-height:1.5;background:var(--panel);color:var(--ink-1);resize:vertical;font-family:inherit;transition:border-color .15s,box-shadow .6s}
.cs-desc:focus{outline:none;border-color:var(--web)}
.cs-desc:disabled{background:var(--sunk);color:var(--ink-3)}
.cs-desc-ok{border-color:var(--good)!important;box-shadow:0 0 0 2px var(--web-soft)}
.cs-desc-err{border-color:var(--danger)!important}
.cs-desc-hint{font-weight:400;color:var(--ink-3);font-size:.68rem}
.cs-vth-wrap{display:flex;flex-direction:column;gap:4px;width:124px}
.cs-vth-wrap .cs-vth{width:124px;height:96px}
.cs-vdesc{border:1px solid var(--line-2);border-radius:7px;padding:5px 7px;font-size:.72rem;line-height:1.4;background:var(--panel);color:var(--ink-1);resize:vertical;font-family:inherit;width:100%;transition:border-color .15s,box-shadow .6s}
.cs-vdesc:focus{outline:none;border-color:var(--web)}
.cs-vdesc:disabled{background:var(--sunk);color:var(--ink-3)}
.pk-vdesc{font-size:.68rem;line-height:1.4;color:var(--ink-2);background:var(--sunk);border-radius:6px;padding:4px 6px;width:100%}
.pk-des-note{margin:6px 0;padding:8px 10px;background:var(--web-soft);border-left:3px solid var(--web);border-radius:6px;font-size:.85rem;line-height:1.55;color:var(--ink-1)}
.pk-des-tip{margin:4px 0 6px;font-size:.78rem;color:var(--ink-3);line-height:1.5}
/* ★案例库 4 维度标签(编辑页 chip + 设计师视角同/换徽章)2026-08-28 */
.cs-dims{display:flex;flex-direction:column;gap:5px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line-2,#e2e6ea)}
.cs-drow{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
.cs-dlab{flex:0 0 52px;font-size:.72rem;color:var(--ink-3,#8a94a0);font-weight:600;padding-top:3px}
.cs-dchips{display:flex;flex-wrap:wrap;gap:5px;flex:1;min-width:0}
.cs-dchip{display:inline-block;font-size:.72rem;line-height:1.5;padding:2px 9px;border-radius:20px;border:1px solid var(--line-2,#d7dce1);background:var(--sunk,#f4f6f8);color:var(--ink-2,#5a6470);cursor:pointer;user-select:none;transition:all .12s}
.cs-dchip:hover{border-color:var(--web,#0e9d86)}
.cs-dchip.on{background:var(--web,#0e9d86);border-color:var(--web,#0e9d86);color:#fff;font-weight:600}
.cs-dadd{color:var(--web,#0e9d86);font-weight:700;border-style:dashed}
.cs-dims-ro .cs-dchip{cursor:default}
.cs-dims-ro .cs-dchip:hover{border-color:var(--line-2,#d7dce1)}
.cs-dfeng{font-size:.72rem;color:var(--ink-2,#5a6470);padding-top:3px}
.cs-dfeng i{color:var(--ink-3,#98a2ad);font-style:normal;font-size:.66rem}
.cs-dempty{font-size:.66rem;color:var(--ink-3,#98a2ad)}
.pk-drow{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0}
.pk-drow-v{margin:4px 0 2px}
.pk-dchip{display:inline-block;font-size:.68rem;line-height:1.5;padding:1px 8px;border-radius:6px;background:var(--sunk,#eef1f4);color:var(--ink-2,#5a6470);border:1px solid var(--line-2,#e2e6ea)}
.pk-dchip.feng{background:var(--web-soft,rgba(14,157,134,.12));border-color:var(--web,#0e9d86);color:var(--web,#0b7d6b)}
.pk-dchip.same{color:var(--ink-3,#8a94a0)}
.pk-dchip.same i{color:var(--ink-3,#9aa4ae);font-style:normal}
.pk-dchip.swap{background:rgba(201,106,18,.13);border-color:rgba(201,106,18,.5);color:#b5620f}
.pk-dchip.swap i{font-style:normal;font-weight:700}
/* 2026-10-17 品牌换成「羽创」断笔字标：品牌块是自带渐变底的 SVG，宽 1.62:1（登录 68×42、侧边栏 49×30） */
.brand-mark.brand-wide{width:68px;background:none;padding:0;overflow:visible}
.brand-mark.brand-wide svg{display:block;width:100%;height:100%}
.brand-mark.sm.brand-wide{width:49px}
#loginView .brand-mark.brand-wide::after{border-radius:10px}
/* 2026-10-17 汤姆：侧边栏选中加深（原来 --web-soft 10% 太淡）。只覆盖侧边栏这一条，--web-soft 别处照旧 */
.nav-item.active{background:rgba(12,138,130,.18);color:var(--web);font-weight:700;box-shadow:inset 3px 0 0 var(--web)}
.nav-item.active:hover{background:rgba(12,138,130,.22)}
@media (prefers-color-scheme:dark){.nav-item.active{background:rgba(57,183,174,.24)}.nav-item.active:hover{background:rgba(57,183,174,.28)}}
/* 2026-10-19 品牌换成「双翼」图形（汤姆从 20 个方案里选 02，只要图形不要字）：左右各三根飞羽，青→蓝→紫；登录 64×42、侧边栏 48×32 */
:root{--wing1:#0C8A82;--wing2:#2F7FA6;--wing3:#5B54C9}
@media (prefers-color-scheme:dark){:root{--wing1:#39B7AE;--wing2:#5FA2DA;--wing3:#8E86F0}}
.brand-mark.brand-wings{width:64px;background:none;padding:0;overflow:visible;border-radius:0}
.brand-mark.brand-wings svg{display:block;width:100%;height:100%;overflow:visible}
.brand-mark.sm.brand-wings{width:48px;height:32px}
.brand-wings .bw1{fill:var(--wing1)}.brand-wings .bw2{fill:var(--wing2)}.brand-wings .bw3{fill:var(--wing3)}
#loginView .brand-mark.brand-wings::after{display:none}
/* 2026-10-26 品牌图标换成 AI 设计里出的小精灵（方案8，只要图形；圆形淡蓝底托、圆外透明，yc_ip.png 256×256）：
   汤姆「只要LOGO换到这个羽字这里，然后把统一管理平台这里的也换了」；登录 56、侧边栏 34。上面双翼那段留着（换回去只改 index.html 的 class 和 img） */
.brand-mark.brand-ip{width:56px;height:56px;background:none;padding:0;border-radius:50%}
.brand-mark.brand-ip img{display:block;width:100%;height:100%}
.brand-mark.sm.brand-ip{width:34px;height:34px}
#loginView .brand-mark.brand-ip::after{border-radius:50%}
/* 2026-10-26 小精灵眨眼（汤姆「这个眼睛可以做到一眨一眨那种吗」→ 选了「两眼睁开」和「眯一只眼」两张）：
   平时显示睁眼那张（yc_ip_open.png），上面叠原版眯一只眼（yc_ip.png）隔一会儿闪一下＝右眼眨；一圈 6 秒：44%、94% 处各眨一下，隔 3 秒（11-02 汤姆：别连眨两下）。
   只放在 AI 设计欢迎页、登录页的大图标（侧栏、对话头像还是静的原版）；系统设了「减少动画」就不眨，停在睁眼。 */
.yc-blink{position:relative}
.yc-blink .yc-eye{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;animation:ycBlink 6s infinite}
@keyframes ycBlink{0%,44%,47.5%,94%,97.5%,100%{opacity:0}44.6%,46.9%,94.6%,96.9%{opacity:1}}
@media (prefers-reduced-motion:reduce){.yc-blink .yc-eye{animation:none}}
/* 2026-10-26 汤姆「这个登录界面可以做大一些吗」→ 看了三张选「用最大的」：整个登录框等比放大（LOGO、字、输入框、按钮一起大）。
   宽≥760、高≥760 放 1.4 倍（台式机、笔记本：504×592）；高 640~760 退到 1.2 倍（放 1.4 会截）；手机和更矮的窗口不放大。 */
@media (min-width:760px) and (min-height:640px){#loginView .login-card{zoom:1.2}}
@media (min-width:760px) and (min-height:760px){#loginView .login-card{zoom:1.4}}
