:root{
  --bg:#0f1115; --panel:#171a21; --panel2:#1e222b; --line:#2a2f3a;
  --text:#e6e8ec; --muted:#9aa3b2; --brand:#ff5c8a; --brand2:#7c5cff;
  --ok:#22c55e; --warn:#f59e0b; --danger:#ef4444; --info:#38bdf8;
  --radius:12px;
  --button-radius:8px; --ui-font-size:14px;
}

/* Light theme overrides */
[data-theme="light"] {
  --bg: #f5f7fa;
  --panel: #ffffff;
  --panel2: #f0f2f5;
  --line: #e2e5ea;
  --text: #1a1d23;
  --muted: #6b7280;
  --brand: #e63e6d;
  --brand2: #6342d4;
  --ok: #16a34a;
  --warn: #d97706;
  --danger: #dc2626;
  --info: #0284c7;
}
[data-theme="light"] body {
  background: linear-gradient(160deg, #f5f7fa, #eef1f6);
}
[data-theme="light"] .login-card {
  box-shadow: 0 20px 60px rgba(0,0,0,.08);
}
[data-theme="light"] .toast {
  box-shadow: 0 10px 30px rgba(0,0,0,.1);
}
[data-theme="light"] .platform-card:hover {
  box-shadow: 0 12px 40px rgba(230,62,109,.08);
}
[data-theme="light"] .tag.pending {
  background: #e8eaed;
  color: #6b7280;
}
[data-theme="light"] .tag.po-draft {
  background: #e8eaed;
  color: #6b7280;
}
[data-theme="light"] .tag.ret-closed {
  background: #e8eaed;
  color: #6b7280;
}
[data-theme="light"] .modal-mask {
  background: rgba(0,0,0,.3);
}
[data-theme="light"] .img-mask {
  background: rgba(0,0,0,.5);
}
[data-theme="light"] .gantt-row:hover {
  background: rgba(99,66,212,.04);
}
[data-theme="light"] .data-table tr:hover td {
  background: rgba(99,66,212,.04);
}
[data-theme="light"] .batch-toolbar {
  background: linear-gradient(135deg,rgba(230,62,109,.06),rgba(99,66,212,.06));
  border-color: rgba(99,66,212,.2);
}

*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  font-family:"Microsoft YaHei","PingFang SC",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:linear-gradient(160deg,#0f1115,#12141b);color:var(--text);font-size:var(--ui-font-size);
}
button{font-family:inherit;cursor:pointer}
a{color:var(--info);text-decoration:none}
.hidden{display:none!important}

/* 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:36px;width:380px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.login-card h1{margin:0 0 4px;font-size:22px}
.login-card .sub{color:var(--muted);margin-bottom:24px;font-size:13px}
.field{margin-bottom:14px}
.field label{display:block;margin-bottom:6px;color:var(--muted);font-size:12px}
.field input,.field select,.field textarea{
  width:100%;padding:10px 12px;background:var(--panel2);border:1px solid var(--line);
  border-radius:8px;color:var(--text);font-size:14px;outline:none
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand)}
.btn{border:none;border-radius:var(--button-radius);padding:10px 16px;font-size:var(--ui-font-size);background:var(--panel2);color:var(--text);border:1px solid var(--line)}
.btn:hover{border-color:var(--brand)}
.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand2));border:none;color:#fff;font-weight:600}
.btn-primary:hover{opacity:.92}
.btn-sm{padding:6px 12px;font-size:13px}
.btn-ok{background:var(--ok);color:#06210f;border:none;font-weight:600}
.btn-danger{background:var(--danger);color:#fff;border:none}
[data-button-style="solid"] .btn-primary{background:var(--brand);box-shadow:none}
[data-button-style="soft"] .btn-primary{background:color-mix(in srgb,var(--brand) 18%,var(--panel2));border:1px solid color-mix(in srgb,var(--brand) 60%,var(--line));color:var(--text)}
[data-ui-density="compact"] .btn{padding-top:7px;padding-bottom:7px}
[data-ui-density="compact"] .btn-sm{padding-top:4px;padding-bottom:4px}
[data-ui-density="compact"] .card,[data-ui-density="compact"] .dash-panel{padding-top:14px;padding-bottom:14px}
.demo-tips{margin-top:18px;padding:12px;background:var(--panel2);border-radius:8px;font-size:12px;color:var(--muted);line-height:1.9}
.demo-tips b{color:var(--text)}

/* 布局 */
.app{display:flex;min-height:100vh}
.sidebar{width:220px;background:var(--panel);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:6px}
.logo{font-size:23.4px;font-weight:700;margin-bottom:20px;display:flex;align-items:center;gap:10px}
.logo .dot{width:12px;height:12px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand2))}
.ui-asset-icon{display:block;max-width:100%;max-height:100%;object-fit:contain;flex:0 0 auto}
.ui-icon-nav{width:33.6px;height:33.6px}
.ui-icon-logo{width:39px;height:39px}
.ui-icon-button{width:20px;height:20px}
.ui-icon-overtime{width:28px;height:28px;font-size:26px}
.ui-icon-heading{width:28px;height:28px}
.ui-icon-page{width:40px;height:40px}
.ui-icon-badge{width:38px;height:38px}
.ui-icon-platform{width:88px;height:88px;margin:0 auto}
.ui-icon-crumb{width:22px;height:22px}
.btn-with-icon,.heading-with-icon{display:flex;align-items:center;justify-content:center;gap:7px}
.heading-with-icon{justify-content:flex-start}
.nav-item{padding:10px 12px;border-radius:8px;color:var(--muted);display:flex;align-items:center;gap:10px;cursor:pointer;font-size:19.6px}
.nav-item:hover{background:var(--panel2);color:var(--text)}
.nav-item.active{background:linear-gradient(135deg,rgba(255,92,138,.18),rgba(124,92,255,.18));color:var(--text);font-weight:600}
.nav-badge{margin-left:auto;background:var(--brand);color:#fff;border-radius:10px;padding:1px 7px;font-size:11px}
.sidebar .spacer{flex:1}
.userbox{padding:12px;background:var(--panel2);border-radius:10px;font-size:13px}
.userbox .role{color:var(--muted);font-size:12px}

.main{flex:1;padding:24px 30px;overflow:auto;max-height:100vh}
.page-title{font-size:20px;font-weight:700;margin:0 0 4px}
.page-sub{color:var(--muted);margin:0 0 20px;font-size:13px}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
.toolbar .grow{flex:1}

/* 卡片/网格 */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.card.click{cursor:pointer;transition:.15s}
.card.click:hover{border-color:var(--brand);transform:translateY(-2px)}
.card h3{margin:0 0 6px;font-size:16px}
.card .meta{color:var(--muted);font-size:12px;margin-bottom:12px}
.stat-row{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;min-width:140px}
.stat .num{font-size:26px;font-weight:700}
.stat .lbl{color:var(--muted);font-size:12px;margin-top:4px}

/* 标签 */
.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:600}
.tag.pending{background:#33373f;color:#aab}
.tag.in_progress{background:rgba(56,189,248,.15);color:var(--info)}
.tag.awaiting_review{background:rgba(245,158,11,.15);color:var(--warn)}
.tag.approved{background:rgba(34,197,94,.15);color:var(--ok)}
.tag.rejected{background:rgba(239,68,68,.15);color:var(--danger)}
.tag.archived{background:rgba(124,92,255,.15);color:var(--brand2)}
.tag.active{background:rgba(34,197,94,.15);color:var(--ok)}
.tag.final{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff}

/* 流程时间线 */
.timeline{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.tl-step{flex:1;min-width:120px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px;position:relative;cursor:pointer;transition:transform .12s,border-color .12s,box-shadow .12s}
.tl-step:hover{border-color:var(--brand2);transform:translateY(-1px)}
.tl-step.cur{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand)}
.tl-step.active:not(.cur){border-color:var(--brand2);box-shadow:0 0 0 1px var(--brand2)}
.tl-step .idx{position:absolute;top:-9px;left:12px;width:20px;height:20px;border-radius:50%;background:var(--panel);border:1px solid var(--line);font-size:11px;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.tl-step.done .idx{background:var(--ok);color:#06210f;border:none}
.tl-step.cur .idx{background:var(--brand);color:#fff;border:none}
.tl-step.active:not(.cur) .idx{background:var(--brand2);color:#fff;border:none}
.tl-step .name{font-weight:600;margin:6px 0 8px}
.tl-step .asg{color:var(--muted);font-size:12px;margin-bottom:8px}
.tl-actions{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.tl-actions .toolbar{display:flex;flex-wrap:wrap;gap:6px;width:100%}
.tl-step:has(.tl-actions){min-width:260px;flex:2}
.project-flow-compact{align-items:stretch;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding:10px 2px 8px;margin-top:6px;scrollbar-width:thin}
.project-flow-compact .tl-step{flex:0 0 250px;min-width:250px;max-width:250px;height:164px;box-sizing:border-box;padding:12px;display:grid;grid-template-columns:70px minmax(144px,1fr);column-gap:12px;align-items:start}
.project-flow-compact .tl-step.cur,.project-flow-compact .tl-step.cur:has(.tl-actions){flex-basis:414px;min-width:414px;max-width:414px;grid-template-columns:78px minmax(128px,1fr) 136px}
.project-flow-compact .tl-step.active:not(.cur),.project-flow-compact .tl-step.active:not(.cur):has(.tl-actions),.project-flow-compact .tl-step.approved-active-compact{flex-basis:390px;min-width:390px;max-width:390px;grid-template-columns:78px minmax(104px,1fr) auto}
.project-flow-compact .tl-step .name{max-width:100%;white-space:normal;overflow-wrap:anywhere;margin:4px 0 8px;font-size:29px;font-weight:800;line-height:1.16}
.project-flow-compact .tl-step.cur .name,.project-flow-compact .tl-step.active .name{font-size:30px;font-weight:800}
.tl-icon-slot{width:70px;height:70px;margin-top:7px;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--panel);border:2px solid var(--line);font-size:24px;font-weight:800;color:var(--muted)}
.project-flow-compact .tl-step.cur .tl-icon-slot,.project-flow-compact .tl-step.active .tl-icon-slot{width:78px;height:78px;margin-top:7px}
.ui-icon-stage{width:64px;height:64px}
.project-flow-compact .tl-step.cur .ui-icon-stage,.project-flow-compact .tl-step.active .ui-icon-stage{width:72px;height:72px}
.tl-step.cur .tl-icon-slot{background:rgba(124,92,255,.16);border-color:var(--brand);color:var(--brand2)}
.tl-step.done .tl-icon-slot{background:rgba(34,197,94,.14);border-color:var(--ok);color:var(--ok)}
.tl-card-copy{min-width:0}
.tl-owner{display:block;max-width:100%;padding:1px 0;margin:0 0 5px;border:0;background:none;color:var(--info);font:inherit;font-size:16px;font-weight:600;line-height:1.35;text-align:left;white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.tl-owner:not(.is-readonly):hover{color:var(--brand2);text-decoration:underline}
.tl-owner.is-readonly{cursor:default;color:var(--muted)}
.tl-reviewer{color:var(--muted);font-size:15px;font-weight:500;line-height:1.35;margin-bottom:7px;white-space:normal}
.project-flow-compact .tl-card-copy>.tag{position:absolute;left:12px;bottom:20px;padding:4px 14px;font-size:16px;line-height:1.2}
.project-flow-compact .tl-actions{align-self:stretch;width:136px;min-width:136px;box-sizing:border-box;margin:0;padding:4px 0 0 13px;border-top:0;border-left:1px dashed var(--line);display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px}
.project-flow-compact .tl-actions .toolbar{width:122px;height:108px;margin:0!important;display:grid;grid-template-rows:repeat(3,32px);gap:6px;align-items:stretch}
.project-flow-compact .tl-actions .btn,.tl-action-placeholder{display:block;width:122px;height:32px;min-width:122px;box-sizing:border-box;padding:0 10px;line-height:30px;white-space:nowrap;text-align:center}
.tl-action-placeholder{visibility:hidden;pointer-events:none}
.tl-action-state{display:flex;width:122px;height:20px;min-height:20px;overflow:hidden;flex-wrap:nowrap;gap:5px;align-items:center}.tl-action-state .tag{white-space:nowrap}.tl-rejected{color:var(--danger);font-size:10px;white-space:nowrap}

/* Phase 2: R-type / Version / DP */
.r-type-btn{transition:all .15s;cursor:pointer}
.r-type-btn:hover{border-color:#f59e0b!important;background:transparent;color:var(--text);font-weight:700}
.sw-card .sw-card-head .sw-card-status{margin-left:auto}
.sw-card:has(.sw-history-btn) .sw-card-actions{display:flex;flex-wrap:wrap;gap:4px;align-items:center}

.rev-range-btn.active{background:transparent;color:var(--text);border-color:#f59e0b;border-width:2px;font-weight:700}

/* 表格 */
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px}
th{color:var(--muted);font-weight:600}
tr:hover td{background:var(--panel2)}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:24px;width:460px;max-width:100%;max-height:90vh;overflow:auto}
.modal.modal-large{width:min(1180px,92vw);max-width:none;max-height:88vh}
.modal h2{margin:0 0 16px;font-size:18px}
.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}

/* 人员选择弹窗 */
.picker-list{max-height:520px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;margin:10px 0}
.picker-item{display:flex;align-items:center;gap:10px;padding:9px 14px;cursor:pointer;transition:.12s;border-bottom:1px solid var(--line)}
.picker-item:last-child{border-bottom:none}
.picker-item:hover{background:rgba(124,92,255,.06)}
.picker-item.active{background:rgba(124,92,255,.12)}
.picker-check{font-size:16px;width:20px;text-align:center;flex-shrink:0}
.picker-name{font-weight:600;min-width:60px}
.picker-role{font-size:12px;color:var(--muted)}
.picker-dept{font-size:12px;color:var(--muted);margin-left:auto}
.picker-pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 0}
.picker-page-info{font-size:12px;color:var(--muted)}
.picker-selected-info{font-size:13px;color:var(--brand2);margin-bottom:4px}
.people-selection-modal{width:min(900px,calc(100vw - 40px));max-width:none;overflow-x:hidden;overflow-y:auto}
.people-selection-modal .department-member-picker{max-width:100%;overflow-x:hidden;overflow-y:auto}
.people-selection-modal .department-member-row{min-width:0}
.people-selection-modal .department-member-list{min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden}
.people-selection-modal .department-member-list::-webkit-scrollbar{height:7px}
.people-selection-modal .department-member-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}
.people-selection-modal .department-member-row[data-department="产品研发部"]{align-items:start}
.people-selection-modal .department-member-row[data-department="产品研发部"] .department-member-list{display:grid;grid-template-rows:repeat(2,max-content);grid-auto-flow:column;grid-auto-columns:max-content;align-content:start}
.user-picker-modal{width:min(900px,calc(100vw - 40px));max-width:none;overflow-x:hidden;overflow-y:auto}
.user-picker-modal .department-member-picker{max-width:100%;overflow-x:hidden;overflow-y:auto}
.user-picker-modal .department-member-row{min-width:0}
.user-picker-modal .department-member-list{min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden}
.user-picker-modal .actions{position:sticky;bottom:0;margin:16px -24px -24px;padding:14px 24px 18px;background:var(--panel);border-top:1px solid var(--line);z-index:2}

/* 编辑项目：默认宽度为普通弹窗的两倍，单个部门人数超出后仅该行横向滚动 */
.modal.project-edit-modal{width:min(920px,calc(100vw - 40px));max-width:none}
.project-edit-modal .department-member-picker{max-width:100%;overflow-x:hidden;overflow-y:auto}
.project-edit-modal .department-member-row{min-width:0}
.project-edit-modal .department-member-list{min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden}
.project-edit-modal .department-member-list::-webkit-scrollbar{height:7px}
.project-edit-modal .department-member-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}
.project-edit-modal .department-member-row[data-department="产品研发部"]{align-items:start}
.project-edit-modal .department-member-row[data-department="产品研发部"] .department-member-list{display:grid;grid-template-rows:repeat(2,max-content);grid-auto-flow:column;grid-auto-columns:max-content;align-content:start}

/* 批量操作栏 */
.batch-bar{display:flex;align-items:center;gap:10px;background:rgba(124,92,255,.08);border:1px solid rgba(124,92,255,.2);border-radius:8px;padding:6px 14px;font-size:13px}
.batch-bar span{font-weight:600;color:var(--brand2)}

/* 审核弹窗文件预览 */
.rv-files-section{margin:10px 0 14px;padding:10px 12px;background:rgba(124,92,255,.04);border:1px solid var(--line);border-radius:8px}
.rv-files-title{font-size:13px;font-weight:600;margin-bottom:8px;color:var(--text)}
.rv-no-files{color:var(--warn,#e67e22);font-weight:500}
.rv-files-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto}
.rv-file-item{display:flex;align-items:center;gap:10px;padding:6px 8px;background:var(--panel);border:1px solid var(--line);border-radius:6px}
.rv-file-thumb{width:48px;height:48px;border-radius:4px;object-fit:cover;flex-shrink:0;border:1px solid var(--line)}
.rv-file-ph{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-radius:4px;font-size:11px;font-weight:700;color:var(--muted);flex-shrink:0;border:1px solid var(--line)}
.rv-file-info{flex:1;min-width:0}
.rv-file-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.row{display:flex;gap:10px}
.row>*{flex:1}
.checklist{max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:8px}
.checklist label{display:flex;align-items:center;gap:8px;padding:6px;color:var(--text);cursor:pointer}
.section{margin-bottom:26px}
.section h2{font-size:16px;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.file-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.file-row .fname{font-weight:600}
.file-row .fmeta{color:var(--muted);font-size:12px}
.file-row .grow{flex:1}
.ver-list{margin:4px 0 0;padding-left:0;list-style:none}
.ver-list li{color:var(--muted);font-size:12px;padding:2px 0}
.back-link{color:var(--muted);cursor:pointer;margin-bottom:14px;display:inline-block}
.back-link:hover{color:var(--text)}
.empty{color:var(--muted);text-align:center;padding:40px}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);padding:12px 22px;border-radius:10px;z-index:200;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.toast.ok{border-color:var(--ok)}
.toast.err{border-color:var(--danger)}

/* 分区标题带操作按钮 */
.sec-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin:0 0 12px;padding-bottom:8px}
.sec-head h2{border:none;margin:0;padding:0}

/* 文件缩略图 */
.file-thumb{width:56px;height:56px;border-radius:8px;object-fit:cover;border:1px solid var(--line);background:var(--panel2);cursor:pointer;flex:none;transition:transform .12s}
.file-thumb:hover{transform:scale(1.05)}
.file-thumb.ph{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:11px;font-weight:700;cursor:default}

/* 图片放大预览 */
.img-mask{position:fixed;inset:0;background:rgba(0,0,0,.82);display:flex;align-items:center;justify-content:center;z-index:300;padding:24px}
.img-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;max-width:94vw;max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.img-box.img-box-wide{width:min(1180px,94vw);height:min(820px,92vh)}
.img-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}
.img-bar span{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.img-wrap{padding:16px;overflow:auto;display:flex;align-items:center;justify-content:center}
.img-wrap img{max-width:86vw;max-height:74vh;border-radius:8px}
.img-wrap-pdf{flex:1;padding:0;min-height:0;position:relative}
.img-wrap-pdf embed{display:block;border:0}
.img-wrap-pdf .pdf-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;pointer-events:none;opacity:0}
.img-wrap-pdf embed:not([src]) ~ .pdf-fallback,
.img-wrap-pdf embed:empty ~ .pdf-fallback{opacity:1;pointer-events:auto}
/* 项目中心可点击的文件类型徽章 (如 PDF) */
.pc-ftype-click{cursor:pointer;transition:transform .12s ease, box-shadow .12s ease}
.pc-ftype-click:hover{transform:scale(1.06);box-shadow:0 4px 12px rgba(0,0,0,.25)}

/* 流程编辑 */
.flow-row{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--panel2)}
.flow-handle{width:22px;text-align:center;color:var(--muted);flex:none}
.flow-name{flex:1;min-width:0}
.flow-role{width:130px;flex:none}
.flow-lock-tip{color:var(--muted);font-size:12px;flex:none}

/* 通知中心 */
.notif-list{display:flex;flex-direction:column;gap:10px}
.notif{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--panel)}
.notif.unread{border-left:3px solid var(--primary,#7c5cff);background:var(--panel2)}
.notif-title{font-weight:600;display:flex;align-items:center;gap:8px}
.notif-body{color:var(--text);opacity:.85;font-size:13px;margin:6px 0}
.dot-unread{width:8px;height:8px;border-radius:50%;background:#ff5c8a;display:inline-block;flex:none}

/* 双栏面板 (子任务 + 研发备注) */
.dual-panel{display:flex;gap:16px;margin-top:18px}
.dual-panel .panel-left,.dual-panel .panel-right{flex:1;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column}
.panel-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.panel-head b{font-size:15px}
.panel-hint{color:var(--muted);font-size:12px}
.panel-add{display:flex;gap:8px;margin-top:12px;align-items:center}
.panel-input{flex:1;min-width:0;padding:8px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px;outline:none}
.panel-input:focus{border-color:var(--brand)}
.panel-sel{width:110px;flex:none;padding:8px 6px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px;outline:none}
.panel-sel:focus{border-color:var(--brand)}

/* 子任务项 */
.stask-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);transition:.15s}
.stask-item:last-child{border-bottom:none}
.stask-item.done .stask-title{text-decoration:line-through;color:var(--muted)}
.stask-item.done .stask-asg{color:var(--muted);opacity:.6}
.stask-chk{width:16px;height:16px;accent-color:var(--ok);cursor:pointer;flex:none}
.stask-title{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stask-asg{font-size:12px;color:var(--info);flex:none;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 研发备注项 */
.note-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);transition:.15s}
.note-item:last-child{border-bottom:none}
.note-item.done .note-text{text-decoration:line-through;color:var(--muted)}
.note-chk{width:16px;height:16px;accent-color:var(--ok);cursor:pointer;flex:none}
.note-text{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 小删除按钮 */
.btn-x{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:4px;flex:none}
.btn-x:hover{background:var(--danger);color:#fff}

/* 空占位 (小) */
.empty-sm{color:var(--muted);text-align:center;padding:20px;font-size:13px}

/* 数据看板 */
.dash-tabs{display:flex;gap:4px;margin-bottom:20px;border-bottom:1px solid var(--line);padding-bottom:0}
.dash-tab{padding:10px 18px;border-radius:8px 8px 0 0;cursor:pointer;color:var(--muted);font-size:14px;font-weight:600;border:1px solid transparent;border-bottom:none;transition:.15s}
.dash-tab:hover{color:var(--text);background:var(--panel2)}
.dash-tab.active{color:var(--text);background:var(--panel);border-color:var(--line);position:relative}
.dash-tab.active::after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--panel)}
.dash-body{min-height:300px}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(auto,1fr));gap:10px;margin-bottom:16px}
.dash-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 10px;text-align:center;min-width:0}
.dash-card.sm{padding:10px 8px}
.dash-num{font-size:20px;font-weight:700;line-height:1.25;overflow-wrap:break-word;word-break:break-all;text-align:center}
.dash-card.sm .dash-num{font-size:18px}
.dash-lbl{color:var(--muted);font-size:11px;margin-bottom:4px;white-space:nowrap}
.dash-big-num{font-size:36px;font-weight:700;margin-bottom:8px}
.dash-row{display:flex;gap:16px}
.dash-row>*{flex:1;min-width:0}
.dash-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.dash-panel h3{margin:0 0 14px;font-size:15px;font-weight:600}

/* 进度条 */
.prog-bar{height:8px;background:var(--panel2);border-radius:4px;overflow:hidden;margin-top:6px}
.prog-fill{height:100%;border-radius:4px;transition:width .3s ease}

/* 水平柱状图 */
.bar-chart{display:flex;flex-direction:column;gap:10px}
.bar-row{display:flex;align-items:center;gap:10px}
.bar-label{width:80px;flex:none;font-size:12px;color:var(--muted);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar-track{flex:1;height:18px;background:var(--panel2);border-radius:4px;overflow:hidden}
.bar-fill{height:100%;border-radius:4px;transition:width .3s ease;min-width:2px}
.bar-val{width:70px;flex:none;font-size:12px;color:var(--text);text-align:right}

/* 最近完成列 */
.dash-recent-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.dash-recent-row:last-child{border-bottom:none}

/* 返回平台按钮 */
.nav-back{padding:8px 12px;border-radius:8px;color:var(--muted);font-size:12px;cursor:pointer;margin-bottom:6px;transition:.15s}
.nav-back:hover{color:var(--text);background:var(--panel2)}

/* 平台入口选择页 */
.platform-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px}
.platform-header{text-align:center;margin-bottom:24px;max-width:100%}
.platform-header h1{font-size:32px;font-weight:700;margin:0 0 8px;background:linear-gradient(135deg,#ff5c8a,#7c5cff);-webkit-background-clip:text;background-clip:text;color:transparent}
.platform-header p{color:var(--muted);font-size:15px;margin:0}
.platform-grid{display:grid;grid-template-columns:repeat(3,280px);gap:24px}
.platform-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:36px 28px;text-align:center;cursor:pointer;transition:transform .2s,border-color .2s,box-shadow .2s}
.platform-card:hover{transform:translateY(-4px);border-color:var(--brand);box-shadow:0 12px 40px rgba(255,92,138,.12)}
.platform-card .pc-icon{height:88px;margin-bottom:14px;display:flex;align-items:center;justify-content:center}
.platform-card h2{margin:0 0 8px;font-size:25.2px;font-weight:700}
.platform-card p{color:var(--muted);font-size:13px;line-height:1.6;margin:0}
.platform-footer{margin-top:40px}
.platform-wrap>.platform-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}

/* 数据表格 */
.table-wrap{overflow-x:auto;margin-top:16px;border-radius:var(--radius);border:1px solid var(--line)}
.table-scroll-top{overflow-x:auto;overflow-y:hidden;height:12px;margin-top:16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel2);position:relative}
.table-scroll-top-inner{height:1px}
.data-table{width:100%;border-collapse:collapse;font-size:13px}
.data-table th{background:var(--panel2);color:var(--muted);font-weight:600;text-align:left;padding:10px 12px;white-space:nowrap;border-bottom:1px solid var(--line)}
.data-table th.sortable{cursor:pointer;user-select:none;position:relative}
.data-table th.sortable:hover{background:rgba(124,92,255,.1);color:var(--text)}
.data-table th.sortable .sort-arrow{display:inline-block;margin-left:4px;font-size:10px;opacity:.3;transition:opacity .15s}
.data-table th.sortable.sort-active .sort-arrow{opacity:1;color:var(--brand2);font-weight:700}
.data-table td{padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.data-table tr:last-child td{border-bottom:none}
.data-table tr:hover td{background:rgba(124,92,255,.04)}
.data-table .empty{text-align:center;color:var(--muted);padding:30px}

/* 单元格长内容折叠 */
.fold-cell{display:inline-flex;align-items:baseline;gap:6px;max-width:220px}
.fold-cell .fold-txt{overflow-wrap:anywhere;word-break:break-all}
.fold-cell.expanded{white-space:normal}
.fold-btn{flex:0 0 auto;border:1px solid var(--line);background:var(--panel2);color:var(--muted);font-size:11px;line-height:1;padding:2px 6px;border-radius:5px;cursor:pointer}
.fold-btn:hover{color:var(--text);border-color:var(--brand2)}

/* 项目中心 (文件集中存储 + 项目中心 双栏布局) */
.pc-split{display:flex;gap:24px;align-items:flex-start}
.pc-split>.pc-col{flex:1;min-width:0}
.pc-split>.pc-center-col{border-left:1px solid var(--line);padding-left:24px}
@media(max-width:960px){.pc-split{flex-direction:column}.pc-split>.pc-center-col{border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:16px}}
.pc-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.pc-crumbs{flex:1;min-width:0;font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:2px}
.pc-crumb{cursor:pointer;color:var(--brand2);padding:2px 4px;border-radius:5px}
.pc-crumb:hover{background:rgba(124,92,255,.08);text-decoration:underline}
.pc-sep{color:var(--muted);margin:0 1px}
.pc-tools{display:flex;gap:8px;flex:0 0 auto}
.pc-list{border:1px solid var(--line);border-radius:8px;overflow:hidden}
.pc-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);font-size:13px}
.pc-item:last-child{border-bottom:none}
.pc-item:hover{background:rgba(124,92,255,.04)}
.pc-dir{cursor:pointer}
.pc-ic{flex:0 0 auto;font-size:16px}
.pc-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);text-decoration:none}
a.pc-name:hover{color:var(--brand2);text-decoration:underline}
.pc-meta{flex:0 0 auto;color:var(--muted);font-size:12px}
.pc-actions{flex:0 0 auto;display:flex;gap:6px;opacity:0;transition:opacity .15s}
.pc-item:hover .pc-actions{opacity:1}

/* 版本管理文件区加高滚动 + 项目中心列表滚动 */
.pc-scroll{max-height:520px;overflow-y:auto;padding-right:4px}
.pc-center-col #pc-browser .pc-list{max-height:460px;overflow-y:auto}
/* 图片缩略图 */
.pc-thumb{flex:0 0 auto;width:44px;height:44px;border-radius:6px;overflow:hidden;border:1px solid var(--line);background:var(--panel2);display:flex;align-items:center;justify-content:center;cursor:zoom-in}
.pc-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pc-file-img{padding-top:6px;padding-bottom:6px}

/* 项目中心 全屏大窗 */
.pc-fs-mask{position:fixed;inset:0;background:rgba(10,12,20,.72);backdrop-filter:blur(3px);z-index:1200;display:flex;align-items:center;justify-content:center;padding:24px}
.pc-fs-box{width:min(1100px,96vw);height:min(88vh,900px);background:var(--panel);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.5)}
.pc-fs-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--line);font-weight:600}
.pc-fs-browser{flex:1;min-height:0;overflow-y:auto;padding:16px 20px}
.pc-fs-browser .pc-list{max-height:none}

/* 项目中心 - 全选/下载工具 */
.pc-selall{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);cursor:pointer}
.pc-selall input{cursor:pointer}
#pc-download[disabled]{opacity:.45;cursor:not-allowed}

/* 项目中心 - 缩略图网格视图 */
.pc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:14px;padding:4px 2px}
.pc-center-col .pc-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.pc-card{position:relative;border:1px solid var(--line);border-radius:10px;background:var(--panel2);overflow:hidden;transition:border-color .15s,box-shadow .15s}
.pc-card:hover{border-color:var(--brand2);box-shadow:0 4px 14px rgba(0,0,0,.18)}
.pc-card.sel{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset}
.pc-card-thumb{width:100%;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;background:#0c0f18;cursor:zoom-in;overflow:hidden}
.pc-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pc-card-thumb img.thumb-loading,.pc-thumb img.thumb-loading,.nas-thumb.thumb-loading{opacity:.45;filter:saturate(.65)}
.pc-card-thumb img.thumb-loaded,.pc-thumb img.thumb-loaded,.nas-thumb.thumb-loaded{opacity:1;transition:opacity .16s ease}
.pc-card-thumb img.thumb-failed,.pc-thumb img.thumb-failed,.nas-thumb.thumb-failed{opacity:.7}
.pc-card-dir .pc-card-thumb{cursor:pointer;background:transparent}
.pc-folder-ic{font-size:44px}
.pc-crumb{display:inline-flex;align-items:center;gap:5px}
.pc-card-foldname{padding:6px 8px;font-size:12px;color:var(--text);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-card-check{position:absolute;top:6px;left:6px;z-index:2;background:rgba(0,0,0,.45);border-radius:5px;padding:2px 4px;display:flex}
.pc-card-check input{cursor:pointer;width:15px;height:15px}
/* 网格卡片的重命名/删除小按钮: 放在缩略图下方一条footer里, 不再遮挡缩略图和选择框 */
.pc-card-actions{display:flex;justify-content:center;gap:6px;padding:5px 6px;border-top:1px solid var(--line);background:var(--panel)}
.pc-card-dir .pc-card-actions{border-top:none;padding-top:0}
.pc-load-more-wrap{display:flex;justify-content:center;padding:14px 4px 4px}
.btn-mini{width:22px;height:22px;padding:0;font-size:12px;line-height:20px;text-align:center;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:5px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.btn-mini:hover{background:transparent;color:var(--text);border-color:#f59e0b;font-weight:700}
.btn-mini-danger:hover{background:#e5484d;color:#fff;border-color:#e5484d}

/* 文件类型图标 (无缩略图的文件) */
.pc-ftype{display:flex;align-items:center;justify-content:center;width:60%;height:60%;border-radius:8px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;font-weight:700;font-size:15px;letter-spacing:.5px}
.pc-ftype-sm{width:40px;height:40px;font-size:11px;border-radius:6px;flex:0 0 auto}


/* 小按钮 */
.btn-xs{padding:4px 10px;font-size:12px;border-radius:6px}

/* 小输入框 (筛选用) */
.input-sm{padding:7px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px;outline:none;min-width:140px}
.input-sm:focus{border-color:var(--brand)}

/* 周报卡片 */
.weekly-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px;margin-top:16px}
.weekly-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;transition:border-color .15s}
.weekly-card:hover{border-color:var(--brand2)}
.wc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.wc-user{font-weight:700;font-size:14px}
.wc-date{color:var(--muted);font-size:12px}
.wc-section{font-size:13px;margin-bottom:8px;line-height:1.6}
.wc-section b{color:var(--muted);font-weight:600;margin-right:4px}
.wc-help{color:var(--warn)}
.wc-images{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.wc-thumb{width:60px;height:60px;object-fit:cover;border-radius:6px;border:1px solid var(--line);cursor:pointer;transition:transform .15s}
.wc-thumb:hover{transform:scale(1.8);z-index:10;position:relative}
.wc-footer{display:flex;gap:8px;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.wc-makeup-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:10px;background:rgba(245,158,11,.16);color:#d97706;border:1px solid rgba(245,158,11,.35);font-size:11px;font-weight:700;white-space:nowrap}
.wc-makeup-note{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:9px 11px;border:1px solid rgba(245,158,11,.3);border-radius:8px;background:rgba(245,158,11,.08);font-size:12px;color:var(--muted)}

/* 周报表单 */
.wr-form{max-width:640px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:28px}
.wr-form textarea{resize:vertical;min-height:60px}
.wr-preview{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.wr-thumb{width:80px;height:80px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.wr-makeup-option{display:flex;align-items:flex-start;gap:10px;margin:4px 0 16px;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);cursor:pointer}
.wr-makeup-option input{margin-top:3px}.wr-makeup-option span{display:flex;flex-direction:column;gap:3px}.wr-makeup-option b{font-size:13px}.wr-makeup-option small{font-size:11px;color:var(--muted);line-height:1.5}.wr-makeup-option.disabled{opacity:.6;cursor:not-allowed}
.work-center-page .toolbar .btn.active{border-color:#f59e0b;color:var(--text);background:rgba(245,158,11,.12);font-weight:700}

/* row (两列等分) */
.row{display:flex;gap:14px}
.row>.field{flex:1;min-width:0}

/* 采购订单状态标签 */
.tag.po-draft{background:#33373f;color:#aab}
.tag.po-confirmed{background:rgba(56,189,248,.15);color:var(--info)}
.tag.po-delivered{background:rgba(245,158,11,.15);color:var(--warn)}
.tag.po-completed{background:rgba(34,197,94,.15);color:var(--ok)}

/* 付款状态标签 */
.tag.pay-unpaid{background:rgba(239,68,68,.15);color:var(--danger)}
.tag.pay-partial{background:rgba(245,158,11,.15);color:var(--warn)}
.tag.pay-paid{background:rgba(34,197,94,.15);color:var(--ok)}

/* 对账单状态标签 */
.tag.recon-pending{background:rgba(245,158,11,.15);color:var(--warn)}
.tag.recon-confirmed{background:rgba(34,197,94,.15);color:var(--ok)}
.tag.recon-disputed{background:rgba(239,68,68,.15);color:var(--danger)}

/* 退货/售后状态标签 */
.tag.ret-pending{background:rgba(245,158,11,.15);color:var(--warn)}
.tag.ret-processing{background:rgba(56,189,248,.15);color:var(--info)}
.tag.ret-resolved{background:rgba(34,197,94,.15);color:var(--ok)}
.tag.ret-none{background:rgba(148,163,184,.15);color:var(--muted)}
.tag.ret-closed{background:#33373f;color:#9aa3b2}

/* 退货/售后类型标签 */
.tag.ret-return{background:rgba(239,68,68,.15);color:var(--danger)}
.tag.ret-exchange{background:rgba(245,158,11,.15);color:var(--warn)}
.tag.ret-repair{background:rgba(56,189,248,.15);color:var(--info)}
.tag.ret-complaint{background:rgba(124,92,255,.15);color:var(--brand2)}

/* 采购明细行 */
.po-item-row{display:flex;gap:8px;align-items:center;margin-bottom:6px}
.po-item-row input{padding:7px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:6px;color:var(--text);font-size:13px;outline:none;min-width:0}
.po-item-row input:focus{border-color:var(--brand)}

/* 甘特图 */
.gantt-legend{display:flex;gap:18px;align-items:center;margin-bottom:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.gantt-legend span{display:flex;align-items:center;gap:6px}
.gantt-legend i{display:inline-block;width:14px;height:8px;border-radius:3px}
.gantt-legend-ms{width:10px;height:10px;background:var(--warn);transform:rotate(45deg);display:inline-block}

.gantt-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:0;overflow-x:auto;position:relative}
.gantt-axis{position:relative;height:36px;border-bottom:1px solid var(--line);background:var(--panel2);padding:0;margin-left:208px}
.gantt-tick{position:absolute;top:0;height:100%;border-left:1px solid var(--line);padding-left:6px;display:flex;align-items:center}
.gantt-tick span{font-size:11px;color:var(--muted);white-space:nowrap}
.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:var(--brand);z-index:5;opacity:.7}
.gantt-today::after{content:"today";position:absolute;top:4px;left:4px;font-size:9px;color:var(--brand);white-space:nowrap}

.gantt-body{padding:8px 0}
.gantt-row{display:flex;align-items:center;padding:6px 16px;border-bottom:1px solid var(--line);min-height:44px}
.gantt-row:last-child{border-bottom:none}
.gantt-row:hover{background:rgba(124,92,255,.04)}
.gantt-label{width:180px;flex:none;padding-right:12px;overflow:hidden}
.gantt-proj-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gantt-proj-meta{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px;margin-top:2px}

.gantt-track{flex:1;position:relative;height:24px;min-width:0}
.gantt-bar{position:absolute;top:6px;height:12px;background:var(--panel2);border:1px solid var(--line);border-radius:6px;z-index:1}
.gantt-stage{position:absolute;top:4px;height:16px;border-radius:4px;z-index:2;opacity:.85;transition:opacity .15s}
.gantt-stage:hover{opacity:1;z-index:3}

.gantt-milestone{position:absolute;top:2px;width:12px;height:12px;background:var(--warn);transform:rotate(45deg) translateX(-50%);z-index:4;border-radius:2px;cursor:default;transition:transform .15s}
.gantt-milestone.done{background:var(--ok)}
.gantt-milestone:hover{transform:rotate(45deg) translateX(-50%) scale(1.3)}

/* 里程碑列表 */
.ms-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:12px}

/* 模板项目选择器 */
.tpl-list{max-height:200px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px}
.tpl-item{padding:10px 12px;border-radius:8px;cursor:pointer;border:1px solid transparent;transition:.15s;margin-bottom:4px}
.tpl-item:last-child{margin-bottom:0}
.tpl-item:hover{background:var(--panel2);border-color:var(--line)}
.tpl-item.selected{background:rgba(124,92,255,.12);border-color:var(--brand2)}
.tpl-name{font-weight:600;font-size:14px;margin-bottom:4px}
.tpl-meta{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}

/* 批量操作工具栏 */
.batch-toolbar{display:flex;align-items:center;gap:12px;padding:10px 16px;margin-bottom:12px;background:linear-gradient(135deg,rgba(255,92,138,.1),rgba(124,92,255,.1));border:1px solid rgba(124,92,255,.3);border-radius:10px;animation:batch-show .2s ease}
@keyframes batch-show{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.batch-count{font-size:13px;font-weight:600;color:var(--brand);margin-right:4px}
.batch-check{width:16px;height:16px;accent-color:var(--brand2);cursor:pointer}
.data-table th input[type="checkbox"]{width:16px;height:16px;accent-color:var(--brand2);cursor:pointer}

.ms-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--panel2);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);font-weight:600}
.ms-hchk{width:20px;flex:none}
.ms-htitle{flex:2;min-width:0}
.ms-hproj{flex:1.2;min-width:0}
.ms-hdate{width:100px;flex:none}
.ms-hcreator{width:80px;flex:none}
.ms-hops{width:110px;flex:none;text-align:right}

.ms-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);font-size:13px;transition:.15s}
.ms-item:last-child{border-bottom:none}
.ms-item:hover{background:rgba(124,92,255,.04)}
.ms-item.done .ms-title{text-decoration:line-through;color:var(--muted)}
.ms-item .ms-chk{width:16px;height:16px;accent-color:var(--ok);cursor:pointer;flex:none}
.ms-item .ms-title{flex:2;min-width:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-item .ms-proj{flex:1.2;min-width:0;color:var(--info);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-item .ms-date{width:100px;flex:none;color:var(--muted);font-size:12px}
.ms-item .ms-creator{width:80px;flex:none;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 响应式 */
@media(max-width:960px){
  .platform-grid{grid-template-columns:1fr}
  .weekly-grid{grid-template-columns:1fr}
  .gantt-label{width:120px}
  .gantt-axis{margin-left:148px}
}

/* 导入导出 */
.modal .data-table{font-size:12px}
.modal .data-table th{padding:6px 8px}
.modal .data-table td{padding:5px 8px}
.modal .table-wrap{border:none;margin-top:8px}

/* 合作方项目授权：一个合作方可一次选择多个项目 */
.grant-project-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.grant-project-heading label{margin:0}
.grant-project-heading>div{display:flex;gap:6px}
.grant-project-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;max-height:260px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:var(--button-radius);background:var(--panel2)}
.grant-project-option{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:var(--button-radius);background:var(--panel);cursor:pointer;transition:border-color .15s,background .15s}
.grant-project-option:hover{border-color:var(--brand)}
.grant-project-option:has(input:checked){border-color:var(--warn);background:color-mix(in srgb,var(--warn) 8%,var(--panel))}
.grant-project-option input{grid-row:1/3;margin:0}
.grant-project-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:600}
.grant-project-option small{color:var(--muted);font-size:11px}
.grant-project-option.is-granted small{color:var(--warn)}
.grant-selected-count{display:block;margin-top:7px;color:var(--muted);font-size:12px}
input[type="file"]{cursor:pointer}
input[type="file"]::-webkit-file-upload-button{
  background:var(--panel2);border:1px solid var(--line);border-radius:6px;
  color:var(--text);padding:6px 12px;cursor:pointer;margin-right:10px;font-size:12px
}
input[type="file"]::-webkit-file-upload-button:hover{border-color:var(--brand)}

/* 权限配置弹窗 */
.perm-hint{color:var(--muted);font-size:12px;margin-bottom:16px;padding:8px 12px;background:var(--panel2);border-radius:8px}
.perm-body{max-height:400px;overflow-y:auto}
.perm-group{margin-bottom:16px}
.perm-group-title{font-size:13px;font-weight:700;color:var(--muted);margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.perm-toggle-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer;transition:.12s;font-size:13px}
.perm-toggle-row:hover{background:var(--panel2)}
.perm-toggle-row input[type="checkbox"]{width:16px;height:16px;accent-color:var(--brand2);cursor:pointer;flex:none}
.perm-toggle-row span{flex:1}
.permission-editor-modal{width:min(1180px,94vw);max-width:none;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;padding:24px 26px}
.permission-editor-modal h2{font-size:20px;margin-bottom:14px;flex:none}
.permission-editor-modal>.field,.permission-editor-modal>.perm-hint{flex:none}
.permission-editor-modal .perm-body{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:14px;max-height:none;overflow:auto;padding:2px 4px 6px 2px}
.permission-editor-modal .perm-group{margin:0;border:1px solid var(--line);border-radius:10px;background:var(--panel2);padding:12px;min-width:0}
.permission-editor-modal .perm-group-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.permission-editor-modal .perm-group-title{font-size:14px;color:var(--text);margin:0;padding:0;border:0;white-space:nowrap}
.permission-editor-modal .perm-group-actions{margin:0;flex:none}
.permission-editor-modal .perm-group-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 8px}
.permission-editor-modal .perm-toggle-row{padding:7px 8px;line-height:1.35;min-width:0}
.permission-editor-modal .actions{position:sticky;bottom:0;flex:none;margin:14px -26px -24px;padding:14px 26px 18px;background:var(--panel);border-top:1px solid var(--line);z-index:2}
@media (max-width:1000px){
  .permission-editor-modal .perm-body{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .permission-editor-modal{padding:18px;width:96vw}
  .permission-editor-modal .perm-body{grid-template-columns:1fr}
  .permission-editor-modal .actions{margin:12px -18px -18px;padding:12px 18px}
}
/* 合作方项目授权 - 板块权限勾选 */
.perm-title{font-size:13px;font-weight:700;color:var(--muted);margin:6px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px 12px;margin-bottom:8px}
.perm-checkbox{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:6px;cursor:pointer;font-size:13px;user-select:none}
.perm-checkbox:hover{background:var(--panel2)}
.perm-checkbox input[type="checkbox"]{width:14px;height:14px;accent-color:var(--brand2);cursor:pointer;flex:none}

/* 审批中心 */
.approval-list{display:flex;flex-direction:column;gap:12px}
.approval-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;transition:border-color .15s}
.approval-card:hover{border-color:var(--brand2)}
.approval-card.approval-approved{border-left:3px solid var(--ok)}
.approval-card.approval-rejected{border-left:3px solid var(--danger)}
.approval-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.approval-type{font-weight:700;font-size:14px}
.approval-body{margin-bottom:10px}
.approval-desc{font-size:14px;margin-bottom:6px;color:var(--text)}
.approval-meta{font-size:12px;color:var(--muted);margin-top:4px}
.approval-comment{font-size:12px;color:var(--warn);margin-top:6px;padding:6px 10px;background:rgba(245,158,11,.08);border-radius:6px}
.approval-actions{display:flex;gap:8px;padding-top:10px;border-top:1px solid var(--line)}

/* 存储进度条 */
.storage-bar{border-radius:8px;overflow:hidden}
.storage-bar .prog-bar{height:12px;background:var(--panel2);border-radius:6px;overflow:hidden}
.storage-bar .prog-fill{height:100%;border-radius:6px;transition:width .4s ease}
.storage-warn{background:rgba(245,158,11,.12);border:1px solid var(--warn);color:var(--warn)}
.storage-danger{background:rgba(239,68,68,.12);border:1px solid var(--danger);color:var(--danger)}

/* 分片上传进度 */
.upload-progress{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;margin-bottom:16px;animation:batch-show .2s ease}
.upload-progress-label{font-size:13px;font-weight:600;margin-bottom:8px;color:var(--text)}
.upload-progress-pct{font-size:12px;color:var(--muted);margin-top:6px;text-align:right}

/* ====== 创意工坊 ====== */
.creative-main{padding:0 !important;overflow:hidden;height:100vh;max-height:100vh}
.creative-three-col{display:grid;grid-template-columns:5fr 6px 1fr 6px 3fr;gap:0;height:100%;min-height:0}
.creative-col-drafts,.creative-col-tags,.creative-col-competitors{padding:16px;overflow-y:auto;border-right:1px solid var(--line);height:100%;min-height:0}
.creative-col-competitors{border-right:none}
.creative-col-tags{padding:12px;background:var(--panel2)}
.creative-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:8px}
.creative-header h2{font-size:15px;font-weight:700;margin:0;white-space:nowrap}
.creative-toolbar{display:flex;gap:6px;align-items:center}
.quarter-select{padding:4px 8px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:12px}
.likes-remaining{font-size:11px;color:var(--muted);padding:4px 8px;background:var(--panel2);border-radius:12px}
.tag-sm{font-size:10px;padding:2px 6px}

/* 创意图稿网格 */
.drafts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.draft-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:border-color .15s,transform .1s;position:relative}
.draft-card:hover{border-color:var(--brand2);transform:translateY(-2px)}
.draft-card.drag-over{border:2px dashed var(--brand2);background:rgba(168,85,247,.05)}
.draft-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:var(--panel2)}
.draft-actions-overlay{position:absolute;top:6px;right:6px;display:none;gap:4px;z-index:2}
.draft-card:hover .draft-actions-overlay{display:flex}
.btn-icon{width:28px;height:28px;border-radius:50%;border:none;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:.12s}
.btn-icon:hover{background:rgba(0,0,0,.8);transform:scale(1.1)}
.draft-info{padding:10px 12px}
.draft-title{font-size:13px;font-weight:600;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.draft-meta{font-size:11px;color:var(--muted);display:flex;align-items:center;justify-content:space-between}
.draft-like-btn{cursor:pointer;display:flex;align-items:center;gap:4px;padding:3px 8px;border-radius:12px;transition:.15s;font-size:12px;border:none;background:transparent;color:var(--muted)}
.draft-like-btn:hover{background:rgba(239,68,68,.1);color:var(--danger)}
.draft-like-btn.liked{color:var(--danger);font-weight:600}
.draft-tags{display:flex;flex-wrap:wrap;gap:4px;padding:6px 12px 10px;min-height:28px}

/* 标签集 */
.tags-panel{padding:20px}
.tags-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.tag-chip{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:16px;font-size:12px;font-weight:500;cursor:grab;user-select:none;transition:.12s;border:1px solid var(--line);background:var(--panel2);color:var(--text)}
.tag-chip:active{cursor:grabbing;opacity:.7}
.tag-chip.dragging{opacity:.4;transform:scale(.95)}
.tag-chip .tag-del{cursor:pointer;opacity:.5;font-size:14px;line-height:1;margin-left:4px}
.tag-chip .tag-del:hover{opacity:1;color:var(--danger)}
.tag-add-row{display:flex;gap:8px;margin-top:16px;align-items:center}
.tag-add-row input{flex:1;max-width:200px;padding:7px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:13px}

/* 标签分区（造型 / 情绪 / 其他） */
.tag-section{margin-bottom:16px;padding-bottom:14px;border-bottom:1px dashed var(--line)}
.tag-section:last-of-type{border-bottom:none;margin-bottom:8px}
.tag-section .tag-add-row{margin-top:8px}
.tag-section .tags-grid{margin-top:10px}
.tag-section-title{font-size:13px;font-weight:700;padding-left:8px;border-left:3px solid var(--line)}

/* 三类标签配色 */
.tag-chip.cat-shape{background:var(--creative-tag-shape-bg,rgba(59,130,246,.14));border-color:var(--creative-tag-shape-text,#3b82f6);color:var(--creative-tag-shape-text,#2563eb)}
.tag-chip.cat-emotion{background:var(--creative-tag-emotion-bg,rgba(236,72,153,.14));border-color:var(--creative-tag-emotion-text,#ec4899);color:var(--creative-tag-emotion-text,#db2777)}
.tag-chip.cat-other{background:var(--creative-tag-other-bg,rgba(16,185,129,.14));border-color:var(--creative-tag-other-text,#10b981);color:var(--creative-tag-other-text,#059669)}
.tag-section-title.cat-shape{color:var(--creative-tag-shape-text,#2563eb);border-left-color:var(--creative-tag-shape-text,#3b82f6);background:var(--creative-tag-shape-bg,transparent)}
.tag-section-title.cat-emotion{color:var(--creative-tag-emotion-text,#db2777);border-left-color:var(--creative-tag-emotion-text,#ec4899);background:var(--creative-tag-emotion-bg,transparent)}
.tag-section-title.cat-other{color:var(--creative-tag-other-text,#059669);border-left-color:var(--creative-tag-other-text,#10b981);background:var(--creative-tag-other-bg,transparent)}

/* 竞品区 */
.competitors-grid{display:grid;grid-template-columns:1fr;gap:10px}
.competitor-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:.15s;position:relative}
.competitor-card:hover{border-color:var(--brand2);transform:translateY(-2px)}
.competitor-card.drag-over{border:2px dashed var(--brand2)}
.competitor-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:var(--panel2)}
.competitor-card .comp-name{padding:8px 12px;font-size:13px;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.comp-link-badge{position:absolute;top:6px;left:6px;background:rgba(0,0,0,.6);color:#fff;font-size:10px;padding:2px 5px;border-radius:4px;z-index:2;line-height:1}
.comp-del-btn{position:absolute;top:6px;right:6px;display:none;z-index:2}
.competitor-card:hover .comp-del-btn{display:flex}

/* 拖拽调整列宽手柄 */
.creative-resize-handle{cursor:col-resize;background:transparent;position:relative;z-index:5;transition:background .15s;height:100%}
.creative-resize-handle::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:36px;border-radius:3px;background:var(--line);opacity:0;transition:opacity .2s}
.creative-resize-handle:hover{background:rgba(168,85,247,.08)}
.creative-resize-handle:hover::after{opacity:1}

/* 竞品筛选栏 */
.comp-filter-bar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.comp-filter-chip{cursor:pointer;transition:.15s;opacity:.65}
.comp-filter-chip:hover{opacity:1}
.comp-filter-chip.active{opacity:1;background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700}

/* 竞品搜索栏 */
.comp-search-bar{position:relative;margin-bottom:10px}
.comp-search-input{width:100%;padding:7px 30px 7px 10px;border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--text);font-size:12px;outline:none;transition:border-color .15s}
.comp-search-input:focus{border-color:var(--brand2)}
.comp-search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:20px;height:20px;border:none;background:var(--panel2);color:var(--muted);border-radius:50%;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;padding:0;line-height:1}
.comp-search-clear:hover{background:var(--danger);color:#fff}

/* 热度值徽章 (卡片上) */
.comp-heat-badge{font-size:11px;padding:1px 4px;border-radius:8px;margin-left:4px;white-space:nowrap;letter-spacing:-2px;line-height:1}

/* 热度值点选 (详情弹窗) */
.heat-picker{display:inline-flex;align-items:center;gap:2px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);width:fit-content}
.heat-icon{font-size:18px;cursor:pointer;filter:grayscale(1) brightness(1.2);opacity:.35;transition:.15s;user-select:none;line-height:1}
.heat-icon:hover{transform:scale(1.15)}
.heat-icon.active{filter:none;opacity:1}
.heat-clear{margin-left:6px;padding:2px 6px;font-size:11px;color:var(--muted);cursor:pointer;border-radius:4px;user-select:none;transition:.15s}
.heat-clear:hover{background:var(--danger);color:#fff}

/* 竞品多图图库 */
.comp-gallery{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.comp-gallery-thumb{width:60px;height:60px;object-fit:cover;border-radius:6px;border:2px solid var(--line);cursor:pointer;transition:.15s}
.comp-gallery-thumb:hover{border-color:var(--brand2)}
.comp-gallery-thumb.active{border-color:var(--brand2)}

/* 竞品详情 */
.comp-detail{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:8px 0}
.comp-detail-img{width:100%;border-radius:var(--radius);object-fit:contain;max-height:400px;background:var(--panel2)}
.comp-detail-info{display:flex;flex-direction:column;gap:12px}
.comp-field{display:flex;flex-direction:column;gap:4px}
.comp-field label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.comp-field input,.comp-field select{padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);font-size:13px}

/* 星级评分 */
.star-rating{display:flex;gap:4px}
.star-rating .star{cursor:pointer;font-size:20px;color:var(--line);transition:.12s}
.star-rating .star.filled{color:#f59e0b}
.star-rating .star:hover{color:#fbbf24;transform:scale(1.15)}

/* 竞品评论 */
.comp-comments{border-top:1px solid var(--line);padding-top:12px;margin-top:8px;max-height:200px;overflow-y:auto}
.comp-comment{padding:8px 0;border-bottom:1px solid var(--line);font-size:12px}
.comp-comment:last-child{border-bottom:none}
.comp-comment-user{font-weight:600;color:var(--brand2)}
.comp-comment-time{color:var(--muted);font-size:11px;margin-left:8px}
.comp-comment-del{cursor:pointer;color:var(--muted);float:right;font-size:11px}
.comp-comment-del:hover{color:var(--danger)}

/* 竞品标签区(可拖放) */
.comp-tags-drop{min-height:40px;border:1px dashed var(--line);border-radius:var(--radius);padding:8px;display:flex;flex-wrap:wrap;gap:6px;transition:.15s;margin-top:8px}
.comp-tags-drop.drag-over{border-color:var(--brand2);background:rgba(168,85,247,.05)}
.comp-tags-drop .tag-chip{cursor:default}

/* 拖放提示 */
.drop-hint{font-size:11px;color:var(--muted);font-style:italic;padding:6px 0}

/* ============================================================
   项目卡片: 缩略图 + 尺寸切换 (50% / 70% 默认 / 100%)
   ============================================================ */
.pgrid{display:grid;gap:16px}
.pgrid-50{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.pgrid-70{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.pgrid-100{grid-template-columns:repeat(auto-fill,minmax(460px,1fr))}
.pcard{padding:0;overflow:hidden;display:flex;flex-direction:column}
.pcard-thumb{position:relative;width:100%;aspect-ratio:16/9;background:var(--panel2);
  display:flex;align-items:center;justify-content:center;overflow:hidden;border-bottom:1px solid var(--line)}
.pcard-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pcard-thumb-empty{color:var(--muted);font-size:32px;text-align:center;line-height:1.4}
.pcard-thumb-hint{font-size:11px;color:var(--muted);margin-top:4px}
.pcard-thumb-upload{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.55);color:#fff;
  border:none;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:16px;
  opacity:0;transition:.18s;backdrop-filter:blur(4px)}
.pcard:hover .pcard-thumb-upload{opacity:1}
.pcard-thumb-upload:hover{background:var(--brand)}
.pcard-body{padding:14px 16px}
.pcard-50 .pcard-body,.pgrid-50 .pcard-body{padding:10px 12px}
.pgrid-50 .pcard-body h3{font-size:14px}
.pgrid-100 .pcard-body{padding:18px 22px}
.pgrid-100 .pcard-body h3{font-size:18px}

/* 项目优先级 (5 火按钮) */
.pcard-priority-row{margin:6px 0}
.proj-priority{display:inline-flex;align-items:center;gap:2px;padding:3px 7px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);user-select:none}
.proj-priority .pri-icon{font-size:14px;line-height:1;filter:grayscale(1) brightness(1.3);opacity:.35;transition:.15s}
.proj-priority .pri-icon.active{filter:none;opacity:1}
.proj-priority.editable{cursor:pointer}
.proj-priority.editable .pri-icon{cursor:pointer}
.proj-priority.editable .pri-icon:hover{transform:scale(1.2);opacity:.75}
.proj-priority.editable .pri-icon.active:hover{opacity:1}
.pgrid-50 .proj-priority{padding:2px 5px}
.pgrid-50 .proj-priority .pri-icon{font-size:12px}
.pgrid-100 .proj-priority .pri-icon{font-size:16px}

/* 尺寸切换按钮组 */
.size-switch{display:inline-flex;align-items:center;gap:4px;background:var(--panel2);
  border:1px solid var(--line);border-radius:999px;padding:3px}
.size-label{font-size:12px;color:var(--muted);padding:0 8px}
.size-btn{background:transparent;color:var(--muted);border:none;padding:5px 12px;
  border-radius:999px;cursor:pointer;font-size:12px;transition:.15s}
.size-btn:hover{color:var(--text)}
.size-btn.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700}

/* ============================================================
   项目详情: 产品图预览区 (4类: 设计图/建模/LOGO/实拍)
   ============================================================ */
.gal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media(max-width:1200px){.gal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.gal-grid{grid-template-columns:1fr}}
.gal-cat{background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px;display:flex;flex-direction:column;gap:10px}
.gal-cat-head{display:flex;align-items:center;gap:8px}
.gal-cat-title{font-weight:600;font-size:13px}
.gal-cat-count{color:var(--muted);font-size:11px;margin-left:auto}
.gal-upload-btn{padding:3px 8px !important;font-size:11px !important}
.gal-preview-wrap{width:100%;max-height:200px;background:var(--panel);border-radius:8px;
  overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid var(--line)}
.gal-preview-img{width:100%;height:100%;object-fit:contain;cursor:zoom-in;display:block}
.gal-default-original{object-fit:contain;background:#fff}
.gal-preview-empty{color:var(--muted);font-size:28px;text-align:center;line-height:1.5}
.gal-preview-empty div{font-size:11px;margin-top:4px}
.gal-thumbs{display:flex;flex-wrap:wrap;gap:6px;min-height:44px}
.gal-thumb{position:relative;width:44px;height:44px;border-radius:6px;overflow:hidden;
  border:2px solid transparent;cursor:pointer;transition:.15s;background:var(--panel)}
.gal-thumb:hover{border-color:var(--brand2)}
.gal-thumb.is-preview{border-color:var(--brand)}
.gal-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.gal-thumb-badge{position:absolute;bottom:0;left:0;right:0;background:var(--brand);
  color:#fff;font-size:9px;text-align:center;padding:1px 0;font-weight:600}
.gal-thumb-actions{position:absolute;top:0;right:0;display:none;gap:2px;padding:2px}
.gal-thumb:hover .gal-thumb-actions{display:flex}
.gal-btn{background:rgba(0,0,0,.65);color:#fff;border:none;width:18px;height:18px;
  border-radius:50%;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}
.gal-btn:hover{background:var(--brand2)}
.gal-btn-danger:hover{background:var(--danger,#ef4444)}

/* ============================================================
   产品图预览: 三档尺寸 (sm ≈ -30% / md 基准 / lg ≈ +30%)
   sm 为默认值 (用户反馈原尺寸偏大)
   ============================================================ */
.gal-grid-sm{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.gal-grid-sm .gal-cat{padding:8px;gap:7px}
.gal-grid-sm .gal-cat-title{font-size:12px}
.gal-grid-sm .gal-preview-wrap{aspect-ratio:1/1;max-width:70%;margin:0 auto}
.gal-grid-sm .gal-preview-empty{font-size:22px}
.gal-grid-sm .gal-thumb{width:32px;height:32px}
.gal-grid-sm .gal-thumbs{min-height:32px;gap:4px}
@media(max-width:1200px){.gal-grid-sm{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.gal-grid-sm{grid-template-columns:1fr}}

.gal-grid-md{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.gal-grid-md .gal-cat{padding:12px;gap:10px}
.gal-grid-md .gal-preview-wrap{aspect-ratio:1/1}
.gal-grid-md .gal-thumb{width:44px;height:44px}
@media(max-width:1200px){.gal-grid-md{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.gal-grid-md{grid-template-columns:1fr}}

.gal-grid-lg{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.gal-grid-lg .gal-cat{padding:16px;gap:14px}
.gal-grid-lg .gal-cat-title{font-size:15px}
.gal-grid-lg .gal-preview-wrap{aspect-ratio:1/1}
.gal-grid-lg .gal-preview-empty{font-size:36px}
.gal-grid-lg .gal-thumb{width:56px;height:56px}
.gal-grid-lg .gal-thumbs{min-height:56px;gap:8px}
@media(max-width:1200px){.gal-grid-lg{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.gal-grid-lg{grid-template-columns:1fr}}

/* gal-grid-auto: 自适应布局 (取代 sm/md/lg 三档) */
.gal-grid-auto{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.gal-grid-auto .gal-cat{padding:10px;gap:8px}
.gal-grid-auto .gal-cat-title{font-size:12px}
.gal-grid-auto .gal-preview-wrap{max-height:180px}
.gal-grid-auto .gal-thumb{width:38px;height:38px}
.gal-grid-auto .gal-thumbs{min-height:38px;gap:5px}
@media(max-width:1200px){.gal-grid-auto{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.gal-grid-auto{grid-template-columns:1fr}}

/* ============================================================
   创意工坊图稿板块: 三档尺寸 (sm / md 基准 / lg)
   ============================================================ */
.drafts-grid-sm{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.drafts-grid-sm .draft-title{font-size:12px}
.drafts-grid-sm .draft-meta{font-size:10px}
.drafts-grid-sm .draft-info{padding:6px 8px}
.drafts-grid-md{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.drafts-grid-lg{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.drafts-grid-lg .draft-title{font-size:15px}
.drafts-grid-lg .draft-info{padding:12px 14px}

/* ============================================================
   创意工坊标签板块: 三档尺寸 (sm / md 基准 / lg)
   ============================================================ */
.tags-grid-sm{gap:5px}
.tags-grid-sm .tag-chip{padding:3px 8px;font-size:11px;border-radius:12px}
.tags-grid-md{gap:8px}
.tags-grid-lg{gap:10px}
.tags-grid-lg .tag-chip{padding:8px 16px;font-size:14px;border-radius:20px}

/* 紧凑型尺寸切换 (用于面板 header 中的三档切换) */
.size-switch-sm{padding:2px}
.size-switch-sm .size-btn{padding:3px 8px;font-size:11px}
.size-switch-sm .size-label{font-size:11px;padding:0 5px}

/* ============================================================
   创意工坊竞品板块: 三档尺寸 (sm / md / lg) — 与图稿一致
   sm 为默认值 (用户反馈原尺寸偏大)
   ============================================================ */
.competitors-grid-sm{grid-template-columns:repeat(auto-fill,minmax(45px,1fr));gap:4px}
.competitors-grid-sm .competitor-card img{aspect-ratio:1}
.competitors-grid-sm .comp-name{padding:2px 3px;font-size:9px}
.competitors-grid-sm .draft-tags{padding:0 3px 3px;gap:2px}
.competitors-grid-sm .tag-chip{padding:1px 3px;font-size:8px}
.competitors-grid-md{grid-template-columns:repeat(auto-fill,minmax(65px,1fr));gap:6px}
.competitors-grid-md .comp-name{padding:3px 5px;font-size:10px}
.competitors-grid-md .draft-tags{padding:0 4px 4px;gap:2px}
.competitors-grid-md .tag-chip{padding:1px 4px;font-size:9px}
.competitors-grid-lg{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.competitors-grid-lg .comp-name{padding:8px 10px;font-size:13px}
.competitors-grid-lg .draft-tags{padding:0 10px 8px}

/* ============================================================
   Tab 栏 (员工/部门 等页面切换)
   ============================================================ */
.tab-bar{display:flex;gap:4px;border-bottom:2px solid var(--line);margin-bottom:20px;padding:0 0 0 4px}
.tab-btn{background:transparent;border:none;padding:10px 20px;cursor:pointer;color:var(--muted);
  font-size:14px;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-2px;transition:.15s}
.tab-btn:hover{color:var(--text)}
.tab-btn.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}

/* 权限分组批量操作按钮 */
.perm-group-actions{display:flex;gap:6px;margin-bottom:8px;justify-content:flex-end}
.perm-group-actions .btn-xs{padding:2px 10px;font-size:11px}

/* ============================================================
   Phase C: 登录记住账号 / 管理区下沉 / 主页徽章卡片
   ============================================================ */
.remember-row{display:flex;align-items:center;gap:8px;margin:8px 0 4px;font-size:13px;color:var(--muted)}
.remember-row input[type="checkbox"]{width:14px;height:14px;cursor:pointer}
.remember-row label{cursor:pointer;user-select:none}
.login-tips{margin-top:10px;padding:10px 12px;background:var(--soft);border-radius:8px;font-size:12px;color:var(--muted);line-height:1.7}
.login-tips b{color:var(--text)}

/* 侧边栏底部管理区 */
.nav-spacer{flex:1;min-height:12px}
.admin-zone{border-top:1px solid var(--line);padding-top:10px;margin-top:8px;display:flex;flex-direction:column;gap:2px}
.admin-zone-title{font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;
  padding:6px 12px 4px;font-weight:600;opacity:.75}
.sidebar .admin-zone .admin-zone-title{font-size:8.8px}
.sidebar .admin-zone .nav-item{font-size:15.68px}

/* 优化反馈入口、提交弹窗及主管理员列表 */
.feedback-userbox-btn{width:100%;margin-top:6px}
.optimization-feedback-entry{border-color:color-mix(in srgb,var(--brand2) 42%,var(--line));background:color-mix(in srgb,var(--brand2) 9%,var(--panel2));color:var(--text)}
.optimization-feedback-entry:hover{border-color:var(--brand2);color:var(--brand2)}
.feedback-modal-sub{margin-bottom:14px}
.feedback-image-hint{margin-top:5px;color:var(--muted);font-size:11px}
.feedback-image-preview{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin-top:9px}
.feedback-preview-item{min-width:0;padding:5px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}
.feedback-preview-item img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:5px}
.feedback-preview-item span{display:block;margin-top:4px;color:var(--muted);font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feedback-admin-page{display:flex;flex-direction:column;gap:14px}
.feedback-filter-toolbar{margin-bottom:0}
.feedback-filter-toolbar .btn.active{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 13%,var(--panel));color:var(--text);font-weight:700}
.feedback-admin-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:12px;align-items:start}
.feedback-admin-card{position:relative;min-width:0;padding:15px 16px;border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:12px;background:var(--card);box-shadow:0 5px 16px rgba(0,0,0,.035)}
.feedback-admin-card.tone-bug{border-left-color:var(--danger)}
.feedback-admin-card.tone-feature{border-left-color:var(--info)}
.feedback-admin-card.tone-optimization{border-left-color:var(--brand)}
.feedback-admin-head{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px}
.feedback-admin-head time{margin-left:auto;font-variant-numeric:tabular-nums}
.feedback-type-badge{padding:3px 8px;border-radius:999px;background:var(--panel2);color:var(--text);font-size:11px;font-weight:750}
.tone-bug .feedback-type-badge{background:color-mix(in srgb,var(--danger) 13%,var(--panel));color:var(--danger)}
.tone-feature .feedback-type-badge{background:color-mix(in srgb,var(--info) 13%,var(--panel));color:var(--info)}
.tone-optimization .feedback-type-badge{background:color-mix(in srgb,var(--brand) 13%,var(--panel));color:var(--brand)}
.feedback-admin-id{font-weight:700}
.feedback-admin-content{margin:13px 0;color:var(--text);font-size:14px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
.feedback-admin-images{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:0 0 12px}
.feedback-admin-images button{display:block;min-width:0;padding:0;border:0;border-radius:7px;overflow:hidden;background:var(--panel2);cursor:zoom-in}
.feedback-admin-images img{display:block;width:100%;aspect-ratio:1;object-fit:cover;transition:transform .15s}
.feedback-admin-images button:hover img{transform:scale(1.025)}
.feedback-admin-meta{display:flex;align-items:center;gap:10px;padding-top:10px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.feedback-admin-meta b{color:var(--text);font-size:12px}
.feedback-admin-empty{grid-column:1/-1}
.feedback-resolution-actions{display:flex;justify-content:flex-end;align-items:center;margin-top:12px;min-height:34px}
.feedback-resolved{color:var(--ok);font-weight:600;font-size:13px}
@media(max-width:760px){.feedback-image-preview{grid-template-columns:repeat(3,minmax(0,1fr))}.feedback-admin-list{grid-template-columns:1fr}}

/* 侧边栏未读徽章（通知/审批区分色） */
.nav-badge-notif,.nav-badge-approval{display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 6px;border-radius:9px;font-size:11px;font-weight:700;color:#fff;
  margin-left:auto;line-height:1}
.nav-badge-notif{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 2px 6px rgba(59,130,246,.35)}
.nav-badge-approval{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 2px 6px rgba(245,158,11,.35)}

/* 副管理员徽标 */
.tag-deputy{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;font-weight:600;
  background:linear-gradient(135deg,#a78bfa,#7c3aed);color:#fff;margin-left:6px;letter-spacing:.02em}

/* 主页顶部通知/审批/待办 徽章卡片 */
.badge-cards{display:grid;grid-template-columns:repeat(3,minmax(200px,1fr));gap:16px;margin-bottom:24px}
.badge-card{position:relative;display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:14px;
  background:var(--panel);border:1px solid var(--line);cursor:pointer;transition:.18s;overflow:hidden}
.badge-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08);border-color:transparent}
.badge-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:4px 0 0 4px}
.badge-card-notif::before{background:linear-gradient(180deg,#3b82f6,#2563eb)}
.badge-card-approval::before{background:linear-gradient(180deg,#f59e0b,#d97706)}
.badge-card-task::before{background:linear-gradient(180deg,#10b981,#059669)}
.badge-icon-wrap{position:relative;width:44px;height:44px;border-radius:12px;display:flex;
  align-items:center;justify-content:center;flex-shrink:0}
.badge-card-notif .badge-icon-wrap{background:rgba(59,130,246,.12);color:#2563eb}
.badge-card-approval .badge-icon-wrap{background:rgba(245,158,11,.14);color:#d97706}
.badge-card-task .badge-icon-wrap{background:rgba(16,185,129,.14);color:#059669}
.badge-icon{display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1}
.badge-count{position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;padding:0 6px;
  border-radius:11px;background:#ef4444;color:#fff;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(239,68,68,.4);
  border:2px solid var(--panel);line-height:1}
.badge-card-notif .badge-count{background:linear-gradient(135deg,#3b82f6,#1d4ed8);box-shadow:0 2px 6px rgba(59,130,246,.45)}
.badge-card-approval .badge-count{background:linear-gradient(135deg,#f59e0b,#c2410c);box-shadow:0 2px 6px rgba(245,158,11,.45)}
.badge-card-task .badge-count{background:linear-gradient(135deg,#10b981,#047857);box-shadow:0 2px 6px rgba(16,185,129,.45)}
.badge-count.is-empty{display:none}
.badge-info{display:flex;flex-direction:column;gap:2px}
.badge-title{font-size:14px;color:var(--muted);font-weight:500}
.badge-sub{font-size:20px;font-weight:700;color:var(--text)}

/* 存储管理：数据位置卡片 */
.storage-loc-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:16px 20px;margin-bottom:20px}
.storage-loc-card h3{margin:0 0 12px;font-size:15px;font-weight:600}
.storage-loc-row{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:13px}
.storage-loc-label{color:var(--muted);min-width:96px;font-weight:500}
.storage-loc-value{color:var(--text);flex:1;font-family:ui-monospace,Consolas,monospace;
  word-break:break-all;font-size:12px}
.storage-loc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}

/* 系统设置项 */
.setting-item{background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:14px 18px;margin-bottom:12px}
.setting-item h4{margin:0 0 6px;font-size:14px;font-weight:600}
.setting-item p{margin:0 0 10px;color:var(--muted);font-size:12px;line-height:1.6}
.setting-item .setting-body{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* 系统设置：界面样式与图标资源管理 */
.ui-style-manager-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.ui-style-manager-head h3,.ui-style-manager h4{margin:0 0 6px}
.ui-style-scope{padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--brand) 15%,var(--panel2));color:var(--brand);font-size:12px;font-weight:700;white-space:nowrap}
.ui-style-layout{display:grid;grid-template-columns:minmax(300px,1fr) minmax(360px,1.3fr);gap:16px;margin-top:16px}
.ui-style-layout>section{padding:15px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}
.ui-style-color-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:9px}
.ui-style-color{display:grid;grid-template-columns:1fr 38px;align-items:center;gap:4px;padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.ui-style-color span{font-size:12px;color:var(--muted)}
.ui-style-color input{width:38px;height:30px;border:0;padding:0;background:transparent;cursor:pointer}
.ui-style-color code{grid-column:1/-1;font-size:11px;color:var(--text)}
.ui-style-fields{display:grid;grid-template-columns:repeat(2,minmax(140px,1fr));gap:9px}
.ui-style-fields label{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.ui-style-fields input,.ui-style-fields select{min-width:0;width:100%;padding:8px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--text)}
.ui-style-preview{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px;padding-top:13px;border-top:1px dashed var(--line)}
.ui-style-preview[data-button-style="solid"] .btn-primary{background:var(--brand);box-shadow:none}
.ui-style-preview[data-button-style="soft"] .btn-primary{background:color-mix(in srgb,var(--brand) 18%,var(--panel2));border:1px solid var(--brand);color:var(--text)}
.ui-icon-manager{margin-top:18px}
.ui-icon-manager-group{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:9px;background:var(--panel2)}
.ui-icon-manager-group summary{padding:12px 14px;cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between}
.ui-icon-manager-group summary span{color:var(--muted);font-size:12px;font-weight:500}
.ui-icon-manager-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:10px;padding:12px;border-top:1px solid var(--line)}
.ui-icon-manager-item{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);min-width:0}
.ui-icon-manager-preview{grid-column:1/-1;width:72px;height:72px;display:flex;align-items:center;justify-content:center;margin:auto;border-radius:10px;background:var(--panel2);border:1px solid var(--line);overflow:hidden}
.ui-icon-manager-preview img{width:72px;height:72px;object-fit:contain}.ui-icon-manager-preview span{font-size:34px;line-height:1}
.ui-icon-manager-item b,.ui-icon-manager-item small{grid-column:1/-1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-icon-manager-item b{font-size:12px}.ui-icon-manager-item small{font-size:10px;color:var(--muted)}
.ui-icon-upload{position:relative;text-align:center;overflow:hidden}.ui-icon-upload input,.ui-style-actions label input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ui-style-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.ui-style-actions label{position:relative;cursor:pointer}
.ui-symbol-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;line-height:1}
.ui-icon-inline{width:20px;height:20px;font-size:17px}.ui-icon-nav{flex:0 0 33.6px}
.managed-text-icon-host{display:inline-flex!important;align-items:center;justify-content:center;gap:6px;white-space:nowrap;vertical-align:middle}
.managed-text-icon-host>.ui-icon-inline,.managed-text-icon-host>span>.ui-icon-inline{display:block;flex:0 0 20px;width:20px;height:20px;margin:0}
.theme-mode-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.theme-mode-actions .btn{width:100%;min-width:0;padding-left:7px;padding-right:7px}
.theme-mode-actions .btn.active{border-color:var(--brand);color:var(--text);font-weight:700;background:color-mix(in srgb,var(--brand) 12%,var(--panel2))}

/* 备份记录表格特殊列 */
.backup-kind-auto{color:#2563eb;font-weight:600}
.backup-kind-manual{color:#d97706;font-weight:600}

@media (max-width:900px){
  .badge-cards{grid-template-columns:1fr}
  .storage-loc-row{flex-direction:column;align-items:flex-start;gap:2px}
  .storage-loc-label{min-width:0}
  .ui-style-layout{grid-template-columns:1fr}
}

/* ========= 品牌 LOGO ========= */
.login-logo{display:flex;justify-content:center;margin:0 0 8px}
.login-logo img{width:88px;height:88px;object-fit:contain;filter:drop-shadow(0 6px 18px rgba(124,92,255,.35));border-radius:20px;background:#fff;padding:6px}
.sidebar .logo{display:flex;align-items:center;gap:8px;font-weight:600}
.sidebar .logo .logo-img{width:26px;height:26px;object-fit:contain;border-radius:6px;background:#fff;padding:2px;box-shadow:0 2px 6px rgba(0,0,0,.08)}
.platform-brand{display:flex;align-items:center;justify-content:center;gap:16px}
.platform-heading-copy{min-width:0;text-align:left;overflow-wrap:anywhere}
.platform-brand .platform-logo{width:80px;height:80px;flex:none;object-fit:contain;border-radius:24px;background:#fff;padding:8px;box-shadow:0 8px 24px rgba(124,92,255,.18)}

/* ====== 运营中心 ====== */

/* 项目卡片网格 */
.ops-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.ops-card{appearance:none;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:.15s;color:var(--text);text-align:left;padding:0;font-family:inherit}
.ops-card:hover{border-color:var(--brand);transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.12)}
.ops-card.active{border:2px solid #f59e0b;box-shadow:0 0 0 2px rgba(245,158,11,.14),0 8px 24px rgba(0,0,0,.1)}
.ops-card-thumb{width:100%;aspect-ratio:16/9;background:var(--panel2);display:flex;align-items:center;justify-content:center;overflow:hidden}
.ops-card-thumb img{width:100%;height:100%;object-fit:cover}
.ops-card-thumb-empty{font-size:11px;color:var(--muted)}
.ops-card-body{display:block;padding:12px 14px;min-width:0}
.ops-card-name{display:block;font-weight:600;font-size:14px;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ops-card-meta{display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ops-selector-grid{margin-bottom:18px}
.ops-inline-timeline.embedded{padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.ops-inline-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 10px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.ops-inline-heading h2{margin:0 0 4px;font-size:20px}.ops-inline-heading p{margin:0;color:var(--muted);font-size:12px}.ops-inline-heading>span{font-size:12px;color:var(--muted);white-space:nowrap}

/* 时间轴容器 */
.ops-timeline-wrap{position:relative;margin-top:20px;padding-bottom:20px}

/* 每个月一行 */
.ops-month-row{position:relative;margin-bottom:28px;padding:10px 12px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.ops-month-header{font-size:13px;font-weight:700;color:var(--brand);padding:2px 0 8px;border-bottom:1px dashed var(--line);margin-bottom:12px;letter-spacing:.5px}

/* 时间轴轨道 */
.ops-track{position:relative;height:50px;margin-bottom:12px}
.ops-track-line{position:absolute;top:22px;left:0;right:0;height:3px;background:var(--line);border-radius:2px}

/* 关键里程星号 */
.ops-ms-star{position:absolute;top:8px;transform:translateX(-50%);z-index:3;cursor:default}
.ops-star{font-size:24px;color:var(--warn);display:block;text-shadow:0 1px 4px rgba(0,0,0,.2)}
.ops-ms-tip{text-align:center;margin-top:-2px}
.ops-ms-date{font-size:10px;color:var(--muted);white-space:nowrap}
.ops-ms-title{font-size:11px;font-weight:600;color:var(--text);white-space:nowrap}
.ops-ms-del{position:absolute;top:-4px;right:-12px;font-size:12px;opacity:.5}
.ops-ms-del:hover{opacity:1}

/* 运营事件卡片区（相对定位容器，卡片按日期绝对定位） */
.ops-ev-area{position:relative;margin-top:4px}
.ops-ev-card{position:absolute;transform:translateX(-50%);width:180px;pointer-events:auto;z-index:2}
.ops-ev-date-tag{font-size:11px;color:var(--muted);text-align:center;margin-bottom:2px;white-space:nowrap}
.ops-ev-arrow{width:0;height:0;margin:0 auto;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid var(--brand)}
.ops-ev-body{background:var(--panel);border:1px solid var(--brand);border-radius:var(--radius);padding:10px 12px;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.ops-ev-tag{display:inline-block;font-size:11px;font-weight:600;color:var(--info);background:rgba(56,189,248,.12);padding:2px 8px;border-radius:10px;margin-bottom:6px}
.ops-ev-title{font-weight:600;font-size:13px;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ops-ev-executor{color:var(--muted);font-size:12px;margin-bottom:8px}
.ops-ev-detail-btn{width:100%}

/* 运营事件详情面板（在弹窗内使用，不重复背景） */
.ops-detail-panel{animation:batch-show .2s ease}
.ops-detail-head{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.ops-detail-head h2{margin:0;font-size:18px}
.ops-detail-fields{display:flex;gap:24px;margin-bottom:16px;font-size:13px}
.ops-detail-fields b{color:var(--muted);margin-right:6px}
.ops-detail-content{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:16px;position:relative}
.ops-detail-label{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px}
.ops-detail-text{font-size:13px;line-height:1.6;margin-bottom:8px}
#ops-ev-edit-content{position:absolute;top:10px;right:10px}

/* 运营素材需求 - 文件卡片网格 */
.ops-detail-materials{margin-top:16px}
.ops-detail-mat-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.ops-mat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.ops-mat-card{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}
.ops-mat-thumb{width:100%;height:130px;object-fit:cover;border-radius:6px;background:var(--panel);border:1px solid var(--line);display:block}
.ops-mat-thumb-file,.ops-mat-thumb-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;color:var(--muted);text-align:center;padding:8px}
.ops-mat-ext{font-size:26px;font-weight:800;color:var(--brand);letter-spacing:1px;margin-bottom:6px}
.ops-mat-fname{font-size:11px;color:var(--muted);word-break:break-all;max-width:100%;line-height:1.3;max-height:2.6em;overflow:hidden}
.ops-mat-thumb-empty{font-size:32px}
.ops-mat-empty-txt{font-size:11px;margin-top:6px}
.ops-mat-desc{font-weight:600;font-size:13px;line-height:1.4;max-height:2.8em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ops-mat-info{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--muted)}
.ops-mat-actions{display:flex;flex-wrap:wrap;gap:4px;margin-top:auto;padding-top:4px;border-top:1px dashed var(--line)}
.ops-mat-actions .btn{flex:1 0 auto;min-width:56px}

/* AI 生图 - 历史画廊 */
.ai-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.ai-gallery-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.ai-gallery-card:hover{border-color:var(--brand2)}
.ai-gallery-thumb{position:relative;background:var(--panel2)}
.ai-gallery-thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.ai-gallery-count{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.65);color:#fff;font-size:11px;padding:2px 8px;border-radius:10px}
.ai-gallery-info{padding:10px 12px 6px}
.ai-gallery-prompt{font-size:13px;font-weight:600;line-height:1.4;max-height:2.8em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px}
.ai-gallery-meta{font-size:11px;color:var(--muted);line-height:1.4}
.ai-gallery-err{font-size:11px;color:#ef4444;margin-top:4px}
.ai-gallery-actions{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px;border-top:1px solid var(--line)}
.ai-gallery-extra{padding:6px 12px 10px;border-top:1px dashed var(--line)}
.ai-gallery-extra-item{display:inline-flex;flex-direction:column;gap:3px;margin:4px;vertical-align:top}
.ai-gallery-extra-actions{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.ai-gallery-extra-actions .btn{min-width:0;padding-left:5px;padding-right:5px;text-align:center}

/* AI 生图 - 多参考图上传与排序 */
.ai-ref-dropzone{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px dashed var(--line);border-radius:9px;background:var(--panel2);transition:border-color .15s,background .15s}
.ai-ref-dropzone:hover,.ai-ref-dropzone:focus-within,.ai-ref-dropzone.is-drag-over{border-color:var(--brand2);background:rgba(124,92,255,.08);outline:none}
.ai-ref-dropzone input[type=file]{max-width:280px;color:var(--text)}
.ai-ref-dropzone-text{font-size:13px;color:var(--text)}
.ai-ref-dropzone-hint{flex-basis:100%;font-size:11px;color:var(--muted)}
.ai-ref-gallery-pick{margin-top:7px;font-size:12px;color:var(--muted)}
.ai-ref-active{margin-top:10px;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px}
.ai-ref-active-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:13px}
.ai-ref-sort-help{font-size:11px;color:var(--muted)}
.ai-ref-thumbs{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.ai-ref-thumb{position:relative;width:72px;height:72px;border:2px solid transparent;border-radius:8px;background:var(--panel2);cursor:grab;user-select:none;transition:opacity .15s,border-color .15s,transform .15s}
.ai-ref-thumb:active{cursor:grabbing}
.ai-ref-thumb img{width:100%;height:100%;display:block;object-fit:cover;border-radius:6px}
.ai-ref-thumb.is-dragging{opacity:.4;transform:scale(.96)}
.ai-ref-thumb.is-drag-over{border-color:var(--brand2);transform:translateY(-2px)}
.ai-ref-order{position:absolute;left:4px;top:4px;display:flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:rgba(0,0,0,.72);color:#fff;font-size:10px;font-weight:700}
.ai-ref-primary{position:absolute;left:4px;bottom:4px;padding:2px 5px;border-radius:4px;background:var(--brand2);color:#fff;font-size:9px;font-weight:700}
.ai-ref-remove{position:absolute;right:-7px;top:-7px;width:20px;height:20px;padding:0;border:1px solid rgba(255,255,255,.5);border-radius:50%;background:#ef4444;color:#fff;font-size:15px;line-height:18px;cursor:pointer}
.ai-ref-remove:hover{background:#dc2626}

/* 六模块颜色风格包：仅在有激活风格包时覆盖模块内部变量 */
[data-ui-style-pack] :is(.creative-shell,.creative-main){--brand:var(--pack-creative-accent);--brand2:var(--pack-creative-accent2);--bg:var(--pack-creative-page);--panel:var(--pack-creative-panel);--panel2:var(--pack-creative-inner);--input-bg:var(--pack-creative-input);--text:var(--pack-creative-text);--muted:var(--pack-creative-muted);--line:var(--pack-creative-line);--creative-tag-shape-bg:var(--pack-creative-shape-tag-bg);--creative-tag-shape-text:var(--pack-creative-shape-tag-text);--creative-tag-emotion-bg:var(--pack-creative-emotion-tag-bg);--creative-tag-emotion-text:var(--pack-creative-emotion-tag-text);--creative-tag-other-bg:var(--pack-creative-other-tag-bg);--creative-tag-other-text:var(--pack-creative-other-tag-text);background:var(--bg);color:var(--text)}
[data-ui-style-pack] :is(.collab-shell,.collab-main){--brand:var(--pack-collab-accent);--brand2:var(--pack-collab-accent2);--bg:var(--pack-collab-page);--panel:var(--pack-collab-panel);--panel2:var(--pack-collab-inner);--input-bg:var(--pack-collab-input);--text:var(--pack-collab-text);--muted:var(--pack-collab-muted);--line:var(--pack-collab-line);background:var(--bg);color:var(--text)}
[data-ui-style-pack] :is(.product-shell,.product-main){--brand:var(--pack-product-accent);--brand2:var(--pack-product-accent2);--bg:var(--pack-product-page);--panel:var(--pack-product-panel);--panel2:var(--pack-product-inner);--input-bg:var(--pack-product-input);--text:var(--pack-product-text);--muted:var(--pack-product-muted);--line:var(--pack-product-line);background:var(--bg);color:var(--text)}
[data-ui-style-pack] :is(.work-center-shell,.work-center-main){--brand:var(--pack-work-center-accent);--brand2:var(--pack-work-center-accent2);--bg:var(--pack-work-center-page);--panel:var(--pack-work-center-panel);--panel2:var(--pack-work-center-inner);--input-bg:var(--pack-work-center-input);--text:var(--pack-work-center-text);--muted:var(--pack-work-center-muted);--line:var(--pack-work-center-line);background:var(--bg);color:var(--text)}
[data-ui-style-pack] :is(.operations-shell,.operations-main){--brand:var(--pack-operations-accent);--brand2:var(--pack-operations-accent2);--bg:var(--pack-operations-page);--panel:var(--pack-operations-panel);--panel2:var(--pack-operations-inner);--input-bg:var(--pack-operations-input);--text:var(--pack-operations-text);--muted:var(--pack-operations-muted);--line:var(--pack-operations-line);background:var(--bg);color:var(--text)}
[data-ui-style-pack] :is(.product-info-shell,.product-info-main){--brand:var(--pack-product-info-accent);--brand2:var(--pack-product-info-accent2);--bg:var(--pack-product-info-page);--panel:var(--pack-product-info-panel);--panel2:var(--pack-product-info-inner);--input-bg:var(--pack-product-info-input);--text:var(--pack-product-info-text);--muted:var(--pack-product-info-muted);--line:var(--pack-product-info-line);background:var(--bg);color:var(--text)}
[data-ui-style-pack] :is(.creative-shell,.collab-shell,.product-shell,.work-center-shell,.operations-shell,.product-info-shell) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="color"]):not([type="range"]):not([type="button"]):not([type="submit"]),select,textarea){background:var(--input-bg)!important}
.ui-pack-toolbar{display:grid;grid-template-columns:minmax(220px,320px) minmax(220px,1fr);gap:10px;margin:12px 0}
.ui-pack-modules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ui-pack-module{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.ui-pack-module-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.ui-pack-module h5{margin:0;font-size:14px}
.ui-pack-copy-actions{display:flex;align-items:center;gap:6px}
.ui-pack-copy-actions .btn{padding:4px 8px;font-size:10px;white-space:nowrap}
.ui-pack-color-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ui-pack-color-grid label{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px;color:var(--muted)}
.ui-pack-color-grid input[type=color]{width:34px;height:28px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--panel)}
@media(max-width:900px){.ui-pack-modules{grid-template-columns:1fr}.ui-pack-color-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-pack-toolbar{grid-template-columns:1fr}}

/* 页面图标不使用外框，图标尺寸与原布局保持不变。 */
.ui-asset-icon,.ui-symbol-icon,.tl-icon-slot,.product-page-icon,.module-page-icon,.p6-shot-difficulty,.badge-icon-wrap,.ui-icon-manager-preview{border:0!important;box-shadow:none!important}

/* 产品信息：项目单行卡片 + 项目内生产批次 */
.po-project-strip{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 108px)/10);gap:12px;width:100%;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x proximity}
.po-project-card{min-width:0;padding:8px;border:1px solid var(--line);border-radius:11px;background:var(--panel);color:var(--text);cursor:pointer;text-align:left;scroll-snap-align:start;transition:border-color .15s,transform .15s,background .15s}
.po-project-card:hover{border-color:var(--brand2);transform:translateY(-2px)}
.po-project-card.active{border:2px solid #f59e0b;background:color-mix(in srgb,#f59e0b 8%,var(--panel));padding:7px}
.po-project-thumb{display:flex;width:100%;aspect-ratio:16/10;align-items:center;justify-content:center;overflow:hidden;border-radius:7px;background:var(--panel2);color:var(--muted);font-size:10px}
.po-project-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.po-project-card strong{display:block;margin-top:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.po-project-card small{display:block;margin-top:2px;color:var(--muted);font-size:10px}
.operations-project-strip{margin:0 0 14px}
.product-main>.toolbar .btn.active{border-color:#f59e0b;color:var(--text);background:rgba(245,158,11,.12);font-weight:700}
.product-info-page .po-page-admin-v2{padding:14px}
.product-info-page .po-proj-row{grid-template-columns:minmax(210px,.8fr) minmax(260px,1.25fr) minmax(240px,.9fr);gap:18px}
.po-batch-control{display:flex;align-content:flex-start;align-items:center;gap:6px;flex-wrap:wrap;padding:10px 14px;border-left:1px dashed var(--line);border-right:1px dashed var(--line)}
.po-batch-control>span{flex-basis:100%;font-size:11px;font-weight:700;color:var(--muted)}
.po-batch-chip{padding:6px 10px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);color:var(--text);font-size:11px;cursor:pointer}
.po-batch-chip.active{border-color:#f59e0b;background:rgba(245,158,11,.12);font-weight:700}
.po-batch-different .po-val,.po-batch-different>span,.po-batch-different .po-intro-body{color:#ef4444!important;font-weight:700}
.po-batch-different{border-color:color-mix(in srgb,#ef4444 45%,var(--line))!important}
@media(max-width:1200px){.product-info-page .po-proj-row{grid-template-columns:1fr 1fr}.po-production-summary,.po-factory-stack{grid-column:1/-1}}
@media(max-width:760px){.po-project-strip{grid-auto-columns:150px}.product-info-page .po-proj-row{grid-template-columns:1fr}.po-batch-control{border:0;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line)}}

/* ============================================================
   合作方登入系统 (Partner Login System)
   ============================================================ */

/* ---------- 登录页双 Tab ---------- */
.login-card{width:420px;max-width:calc(100vw - 32px)}
.login-tabs{display:flex;gap:6px;margin:16px 0 18px;padding:4px;background:var(--panel2);border-radius:10px;border:1px solid var(--line)}
.login-tab{flex:1;padding:9px 8px;border:none;background:transparent;color:var(--muted);font-size:13px;font-weight:600;border-radius:7px;cursor:pointer;transition:.15s}
.login-tab:hover{color:var(--text)}
.login-tab.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700;box-shadow:none}
.login-panel{animation:fadeIn .18s ease-out}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.field-row{display:flex;gap:10px}
.field-row .field{margin-bottom:14px}
.login-sub-switch a:hover{text-decoration:underline!important}
.remember-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin:2px 0 6px;cursor:pointer;user-select:none}
.remember-row input[type=checkbox]{accent-color:var(--brand2)}
.login-logo{text-align:center;margin-bottom:8px}
.login-logo img{border-radius:14px}

/* ---------- 合作方主壳 ---------- */
.partner-app{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--bg),var(--panel))}
.partner-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 24px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
.partner-brand{display:flex;align-items:center;gap:12px;min-width:0}
.partner-logo{width:44px;height:44px;border-radius:10px;object-fit:cover;flex-shrink:0}
.partner-title{font-size:16px;font-weight:700;background:linear-gradient(135deg,var(--brand),var(--brand2));-webkit-background-clip:text;background-clip:text;color:transparent}
.partner-subtitle{font-size:12px;color:var(--muted);margin-top:2px}
.partner-userbox{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.partner-user-info{font-size:12px;line-height:1.4;text-align:right;min-width:0}
.partner-user-info .muted{color:var(--muted);font-size:11px}

.partner-nav{display:flex;gap:4px;padding:8px 20px;background:var(--panel2);border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch}
.pnav-item{border:none;background:transparent;color:var(--muted);padding:9px 16px;font-size:13px;font-weight:600;border-radius:8px;cursor:pointer;white-space:nowrap;transition:.15s}
.pnav-item:hover{color:var(--text);background:rgba(124,92,255,.08)}
.pnav-item.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700;box-shadow:none}

.partner-main{flex:1;padding:24px;max-width:1280px;width:100%;margin:0 auto}
.partner-hero{background:linear-gradient(135deg,rgba(255,92,138,.08),rgba(124,92,255,.08));border:1px solid var(--line);border-radius:14px;padding:20px 24px;margin-bottom:18px}
.partner-hero h2{margin:0 0 6px;font-size:20px}
.partner-hero .hero-sub{color:var(--muted);font-size:13px}
.tag-role{display:inline-block;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;background:rgba(124,92,255,.15);color:var(--brand2);margin-left:6px;vertical-align:middle}

.partner-empty{background:var(--panel);border:1px dashed var(--line);border-radius:14px;padding:48px 20px;text-align:center}
.empty-icon{font-size:48px;line-height:1;margin-bottom:12px;opacity:.7}
.empty-title{font-size:16px;font-weight:700;margin-bottom:8px;color:var(--text)}
.empty-desc{color:var(--muted);font-size:13px;line-height:1.8}

/* ---------- 管理员: 产品信息管理页 ---------- */
.partner-filter-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.pf-tabs{display:flex;gap:4px;padding:4px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap}
.pf-tab{border:none;background:transparent;color:var(--muted);padding:7px 14px;font-size:13px;font-weight:600;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.15s}
.pf-tab:hover{color:var(--text)}
.pf-tab.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700}
.pf-cnt{display:inline-block;min-width:20px;padding:0 6px;height:18px;line-height:18px;text-align:center;background:rgba(0,0,0,.28);color:#fff;border-radius:9px;font-size:11px;font-weight:700}
.pf-tab:not(.active) .pf-cnt{background:rgba(124,92,255,.15);color:var(--brand2)}
.pf-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pf-right select,.pf-right input{padding:7px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px;outline:none}
.pf-right select:focus,.pf-right input:focus{border-color:var(--brand)}
.pf-right input{min-width:220px}

.table-scroll{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);-webkit-overflow-scrolling:touch}
.table-scroll table{width:100%;border-collapse:collapse;font-size:13px;min-width:720px}
.table-scroll th{background:var(--panel2);color:var(--muted);font-weight:600;text-align:left;padding:10px 12px;white-space:nowrap;border-bottom:1px solid var(--line)}
.table-scroll td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.table-scroll tr:last-child td{border-bottom:none}
.table-scroll tr:hover td{background:rgba(124,92,255,.04)}
.table-scroll .empty{text-align:center;color:var(--muted);padding:30px}
.table-scroll .fmeta{color:var(--muted);font-size:12px;white-space:nowrap}

.partner-table td{white-space:normal}
.partner-actions{display:flex;flex-wrap:wrap;gap:4px;min-width:180px}
.partner-actions .btn{padding:4px 10px;font-size:12px}
.partner-remark-row td{background:rgba(124,92,255,.04)!important;padding:6px 12px;font-size:12px;border-bottom:1px solid var(--line)}

/* 状态徽章 */
.badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:700;white-space:nowrap;letter-spacing:.3px}
.badge-pending{background:rgba(245,158,11,.15);color:var(--warn);border:1px solid rgba(245,158,11,.35)}
.badge-approved{background:rgba(34,197,94,.15);color:var(--ok);border:1px solid rgba(34,197,94,.35)}
.badge-rejected{background:rgba(239,68,68,.15);color:var(--danger);border:1px solid rgba(239,68,68,.35)}
.badge-disabled{background:rgba(148,163,184,.15);color:#94a3b8;border:1px solid rgba(148,163,184,.35)}

/* 身份 Tag */
.tag-supplier{background:rgba(56,189,248,.15);color:var(--info)}
.tag-sales{background:rgba(236,72,153,.15);color:#ec4899}

/* ---------- 管理员: 合作方审计 ---------- */
.partner-audit-filter{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap;padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:10px}
.partner-audit-filter label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.partner-audit-filter input,.partner-audit-filter select{padding:6px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:7px;color:var(--text);font-size:13px;outline:none}
.partner-audit-filter input:focus,.partner-audit-filter select:focus{border-color:var(--brand)}
.partner-audit-ua{max-width:280px;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:11px}

/* ---------- 响应式 (手机) ---------- */
@media (max-width:768px){
  .login-card{padding:24px 20px;width:calc(100vw - 24px)}
  .login-card h1{font-size:18px}
  .field-row{flex-direction:column;gap:0}
  .login-tabs{margin:12px 0 14px}
  .login-tab{font-size:12px;padding:8px 6px}

  .partner-header{padding:10px 14px;gap:8px}
  .partner-logo{width:36px;height:36px}
  .partner-title{font-size:14px}
  .partner-subtitle{font-size:11px}
  .partner-userbox{gap:6px;width:100%;justify-content:flex-end}
  .partner-user-info{display:none}
  .partner-userbox .btn{padding:6px 10px;font-size:12px}
  .partner-nav{padding:6px 12px;gap:2px}
  .pnav-item{padding:7px 12px;font-size:12px}
  .partner-main{padding:14px}
  .partner-hero{padding:14px 16px}
  .partner-hero h2{font-size:16px}
  .partner-empty{padding:32px 14px}
  .empty-icon{font-size:36px}

  .partner-filter-bar{gap:8px}
  .pf-tabs{width:100%;overflow-x:auto;flex-wrap:nowrap}
  .pf-tab{flex-shrink:0;padding:6px 10px;font-size:12px}
  .pf-right{width:100%}
  .pf-right input{min-width:0;flex:1}
  .partner-actions{min-width:0}
  .partner-audit-filter{padding:10px 12px;gap:8px}
  .partner-audit-filter input{min-width:0;flex:1}
  .partner-audit-ua{max-width:140px}
}

/* Light theme 补丁 */
[data-theme="light"] .login-tabs{background:#eef1f6}
[data-theme="light"] .partner-app{background:linear-gradient(160deg,#f5f7fa,#eef1f6)}
[data-theme="light"] .partner-hero{background:linear-gradient(135deg,rgba(230,62,109,.06),rgba(99,66,212,.06))}
[data-theme="light"] .pf-tabs{background:#eef1f6}
[data-theme="light"] .badge-disabled{background:#eef1f6;color:#6b7280;border-color:#d1d5db}
[data-theme="light"] .pf-tab:not(.active) .pf-cnt{background:rgba(99,66,212,.12)}
[data-theme="light"] .partner-remark-row td{background:rgba(99,66,212,.04)!important}

/* ============================================================
   售后管理 v2 (after_sales_records)
   ============================================================ */
.as-table td{white-space:normal;vertical-align:middle}
.as-table th:nth-child(4),.as-table td:nth-child(4){min-width:120px}
.as-thumb{width:40px;height:40px;border-radius:6px;object-fit:cover;border:1px solid var(--line);margin-right:3px;cursor:pointer;vertical-align:middle;transition:transform .15s}
.as-thumb:hover{transform:scale(1.6);z-index:5;position:relative;box-shadow:0 4px 16px rgba(0,0,0,.25)}
.as-more{display:inline-block;padding:2px 6px;border-radius:10px;background:var(--panel2);color:var(--muted);font-size:11px;font-weight:600;margin-left:3px}
.as-new-row{background:rgba(124,92,255,.04);border-bottom:2px dashed var(--line)}
.as-new-row td{padding:8px 6px!important;white-space:nowrap}
.as-new-row input{font-size:12px!important;padding:4px 6px!important;border-radius:6px!important}
.as-new-row .as-new-add{font-size:14px;padding:2px 8px;border-radius:6px}
.as-new-row .as-new-save{white-space:nowrap;font-weight:700}
.as-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.as-thumb-wrap{position:relative;display:inline-block}
.as-thumb-del{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;background:var(--danger);color:#fff;text-align:center;line-height:16px;font-size:12px;cursor:pointer;box-shadow:0 2px 4px rgba(0,0,0,.2)}
.as-thumb-del:hover{transform:scale(1.1)}
.as-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text);cursor:pointer;margin-top:4px}
.as-check input[type=checkbox]{accent-color:var(--brand2);width:16px;height:16px}

/* 周报预览图 */
.wr-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.wr-thumb{width:80px;height:80px;border-radius:6px;object-fit:cover;border:1px solid var(--line)}

/* 发货管理分页栏 */
.ship-pager{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:10px 14px;margin-bottom:12px;background:var(--panel2);border:1px solid var(--line);border-radius:10px}
.ship-pager-info{font-size:13px;color:var(--muted);white-space:nowrap}
.ship-pager-info b{color:var(--text)}
.ship-pager-btns{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.ship-page-btn{min-width:30px;text-align:center;font-variant-numeric:tabular-nums}
.ship-page-btn.active{background:transparent!important;color:var(--text)!important;border:2px solid #f59e0b!important;font-weight:700}
.ship-page-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}
.ship-page-ellipsis{display:inline-block;padding:0 4px;color:var(--muted);font-weight:700;letter-spacing:1px;user-select:none}

/* 行内编辑 */
td[data-field]{cursor:pointer;transition:background .15s}
td[data-field]:hover{background:rgba(124,92,255,.08);outline:1px dashed rgba(124,92,255,.3);outline-offset:-1px}
td.ie-active{padding:3px!important;background:rgba(124,92,255,.06)!important;outline:2px solid var(--brand)!important;outline-offset:-2px}
.ie-input{width:100%;box-sizing:border-box;padding:5px 7px;border:1px solid var(--brand);border-radius:4px;background:var(--bg);color:var(--text);font-size:13px;outline:none;font-family:inherit}
.ie-input:focus{box-shadow:0 0 0 2px rgba(124,92,255,.2)}


/* ====== 图稿管理 (周期3) ====== */
.aw-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:12px}
.aw-sel{padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--text);font-size:13px;min-width:100px}
.aw-stats{font-size:12px;color:var(--muted);margin-bottom:12px}
.aw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.aw-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:box-shadow .15s,transform .15s}
.aw-card:hover{box-shadow:0 4px 20px rgba(0,0,0,.12);transform:translateY(-2px)}
.aw-thumb-wrap{position:relative;width:100%;aspect-ratio:1;overflow:hidden;background:var(--panel)}
.aw-thumb{width:100%;height:100%;object-fit:cover;cursor:zoom-in;transition:transform .2s}
.aw-thumb:hover{transform:scale(1.05)}
.aw-src-nas,.aw-src-up{position:absolute;top:6px;right:6px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;letter-spacing:.5px}
.aw-src-nas{background:rgba(0,180,100,.85);color:#fff}
.aw-src-up{background:rgba(100,100,255,.85);color:#fff}
.aw-external-lock-badge{position:absolute;z-index:2;top:7px;left:7px;padding:3px 8px;border:1px solid rgba(239,68,68,.58);border-radius:5px;background:color-mix(in srgb,var(--panel) 90%,#7f1d1d 10%);color:#ef4444;font-size:11px;font-weight:800;letter-spacing:.04em;box-shadow:0 2px 8px rgba(0,0,0,.22)}
.aw-lock-btn{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 48%,var(--line))}.aw-lock-btn:hover{background:color-mix(in srgb,var(--danger) 12%,transparent)}
.aw-unlock-btn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 48%,var(--line))}.aw-unlock-btn:hover{background:color-mix(in srgb,var(--warn) 12%,transparent)}
.aw-info{padding:10px 12px}
.aw-fname{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}
.aw-meta{font-size:11px;color:var(--muted);margin-bottom:6px}
.aw-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.aw-tag{display:inline-block;padding:1px 7px;border-radius:10px;background:rgba(124,92,255,.12);color:var(--brand);font-size:10px;font-weight:600}
.aw-note{font-size:11px;color:var(--muted);font-style:italic;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aw-actions{display:flex;gap:4px;flex-wrap:wrap}
.btn-xs{padding:2px 8px!important;font-size:11px!important;border-radius:6px!important}
.aw-card-readonly .aw-actions{display:none}
.aw-lightbox{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.85);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:zoom-out}
.aw-lb-close{position:absolute;top:16px;right:24px;font-size:36px;color:#fff;cursor:pointer;z-index:10000;line-height:1;opacity:.8;transition:opacity .15s}
.aw-lb-close:hover{opacity:1}
.aw-lb-title{color:#fff;font-size:14px;margin-bottom:8px;opacity:.8}
.aw-lb-img{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:8px;box-shadow:0 8px 40px rgba(0,0,0,.5)}
.nas-breadcrumb{padding:8px 12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;font-size:13px;margin-bottom:10px}
.nas-crumb-item{cursor:pointer;color:var(--brand);text-decoration:underline}
.nas-crumb-item:hover{color:var(--brand2)}
.nas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;max-height:400px;overflow-y:auto;padding:4px}
.nas-item{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);cursor:default;transition:background .15s}
.nas-dir{cursor:pointer}
.nas-dir:hover{background:rgba(124,92,255,.08);border-color:var(--brand)}
.nas-icon{font-size:28px;margin-bottom:4px}
.nas-name{font-size:11px;text-align:center;word-break:break-all;max-height:2.4em;overflow:hidden;line-height:1.2em}
.nas-thumb{width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;margin-bottom:4px}
.nas-check{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text);cursor:pointer;margin-top:2px}
.nas-check input{accent-color:var(--brand);width:14px;height:14px}
.aw-up-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.aw-up-thumb{width:60px;height:60px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.aw-tag-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px;max-height:300px;overflow-y:auto;padding:4px}
.aw-tag-chk{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);cursor:pointer;font-size:13px;transition:background .15s}
.aw-tag-chk:hover{background:rgba(124,92,255,.06)}
.aw-tag-chk input{accent-color:var(--brand);width:16px;height:16px}

/* ====== 合作方新布局 (周期 2-3: 侧边栏 + 主内容区) ====== */
.ps-layout{display:flex;min-height:100vh;background:var(--bg);color:var(--text)}
.ps-sidebar{width:240px;min-width:240px;background:var(--panel2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 0;overflow-y:auto}
.ps-brand{font-size:15px;font-weight:700;padding:0 16px 4px;display:flex;align-items:center;gap:8px}
.ps-logo-img{width:28px;height:28px;border-radius:6px}
.ps-sub{font-size:11px;color:var(--muted);padding:0 16px 12px}
.ps-proj-list{flex:1;padding:0 8px;overflow-y:auto}
.ps-proj{padding:8px 12px;border-radius:8px;cursor:pointer;margin-bottom:2px;transition:background .15s}
.ps-proj:hover{background:rgba(124,92,255,.08)}
.ps-proj.active{background:linear-gradient(135deg,rgba(124,92,255,.15),rgba(124,92,255,.08));border-left:3px solid var(--brand)}
.ps-proj-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ps-proj-series{font-size:11px;color:var(--muted);margin-top:2px}
.ps-proj-empty{text-align:center;padding:20px 12px;color:var(--muted);font-size:12px}
.ps-bottom{padding:8px 8px 0;border-top:1px solid var(--line);margin-top:8px}
.ps-nav-btn{padding:7px 12px;border-radius:8px;cursor:pointer;font-size:13px;transition:background .15s;margin-bottom:1px}
.ps-nav-btn:hover{background:rgba(124,92,255,.08)}
.ps-divider{height:1px;background:var(--line);margin:6px 12px}
.ps-user-box{padding:8px 12px;font-size:12px}
.ps-role{font-size:10px;color:var(--brand);background:rgba(124,92,255,.12);padding:1px 6px;border-radius:10px;margin-left:4px}
.ps-company{color:var(--muted);margin-top:2px}
.ps-logout{width:100%;margin-top:8px}
.ps-main{flex:1;padding:24px 32px;overflow-y:auto;max-height:100vh}
.ps-page-head{margin-bottom:20px}
.ps-page-head h2{margin:0 0 4px;font-size:20px}
.ps-page-head p{margin:0;color:var(--muted);font-size:13px}
.ps-placeholder{text-align:center;padding:80px 0;color:var(--muted)}
.ps-ph-icon{font-size:48px;margin-bottom:12px}
.ps-empty{text-align:center;padding:40px 0;color:var(--muted)}

/* 订单卡片 */
.ps-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.ps-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden;cursor:pointer;transition:box-shadow .15s,transform .15s}
.ps-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.1);transform:translateY(-2px)}
.ps-card-img{width:100%;aspect-ratio:16/9;overflow:hidden;background:var(--panel)}
.ps-card-img img{width:100%;height:100%;object-fit:cover}
.ps-card-thumb-empty{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:36px;color:var(--muted);background:var(--panel)}
.ps-card-body{padding:12px 14px}
.ps-card-body h3{margin:0 0 6px;font-size:15px}
.ps-card-meta{font-size:12px;color:var(--muted);margin-bottom:3px}
.ps-card-meta b{color:var(--text)}

/* 订单详情 */
.ps-detail-grid{display:grid;grid-template-columns:1fr 300px;gap:24px}
.ps-detail-left{min-width:0}
.ps-detail-right{min-width:0}
.ps-info-section{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:14px}
.ps-info-section h4{margin:0 0 10px;font-size:14px;color:var(--text)}
.ps-info-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid rgba(128,128,128,.1);font-size:13px}
.ps-info-row:last-child{border-bottom:none}
.ps-info-row span{color:var(--muted)}
.ps-info-row b{color:var(--text)}
.ps-tbl-compact{font-size:12px}
.ps-tbl-compact th{padding:6px 8px;font-size:11px}
.ps-tbl-compact td{padding:5px 8px}
.ps-tbl-empty{text-align:center;color:var(--muted);padding:16px!important}
.ps-prod-imgs{display:grid;grid-template-columns:1fr;gap:8px}
.ps-prod-img{width:100%;border-radius:8px;object-fit:cover;max-height:250px;cursor:zoom-in}
.ps-img-empty{text-align:center;padding:24px;color:var(--muted);font-size:13px;background:var(--panel);border-radius:8px}

/* 图稿分区 */
.ps-aw-section{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:16px}
.ps-aw-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.ps-aw-head h4{margin:0;font-size:15px}
.ps-aw-perm{font-size:11px;color:#e8a000;background:rgba(232,160,0,.1);padding:2px 8px;border-radius:10px}
.ps-aw-count{font-size:11px;color:var(--muted);margin-left:auto}
.ps-aw-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.ps-aw-item{display:flex;flex-direction:column;align-items:center}
.ps-aw-img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;cursor:zoom-in;border:1px solid var(--line);transition:transform .15s}
.ps-aw-img:hover{transform:scale(1.04)}
.ps-aw-name{font-size:11px;margin-top:4px;text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ps-aw-tags{display:flex;gap:3px;flex-wrap:wrap;margin-top:2px}
.ps-aw-tag{font-size:9px;padding:1px 5px;border-radius:8px;background:rgba(124,92,255,.1);color:var(--brand)}
.ps-aw-empty{grid-column:1/-1;text-align:center;padding:20px;color:var(--muted);font-size:13px;border:1px dashed var(--line);border-radius:8px}

/* ========== 生产订单详情页（PPT对齐版式） ========== */
.po-page{display:flex;flex-direction:column;gap:14px;padding:16px;background:var(--bg);min-height:100%}
.po-empty{text-align:center;padding:40px;color:var(--muted);font-size:14px;border:1px dashed var(--line);border-radius:10px;background:var(--card)}

/* 顶部栏 */
.po-topbar{display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap}
.po-topbar .btn-back{padding:6px 12px;font-size:13px}
.po-top-fields{display:flex;gap:20px;flex:1;flex-wrap:wrap;align-items:center}
.po-top-item{display:flex;align-items:center;gap:6px;font-size:13px;min-width:0}
.po-top-item .po-label{color:var(--muted);white-space:nowrap;font-size:12px}
.po-top-item .po-value{color:var(--fg);font-weight:500}
.po-top-item .po-input{min-width:120px}
.po-topbar-actions{display:flex;gap:8px;align-items:center}

/* 主体三栏布局 */
.po-body{display:flex;gap:14px;align-items:stretch;min-height:600px}

/* 左侧批次侧边栏 */
.po-batches{width:160px;flex-shrink:0;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:6px;overflow-y:auto;max-height:calc(100vh - 140px)}
.po-batches-title{font-size:12px;color:var(--muted);padding:4px 8px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.po-btab{padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--fg);border:1px solid transparent;transition:all .15s;user-select:none;display:flex;flex-direction:column;gap:2px}
.po-btab:hover{background:rgba(124,92,255,.08);border-color:rgba(124,92,255,.2)}
.po-btab.active{background:linear-gradient(135deg,rgba(124,92,255,.15),rgba(124,92,255,.08));border-color:var(--brand);color:var(--brand);font-weight:600}
.po-btab .po-btab-name{font-weight:inherit}
.po-btab .po-btab-meta{font-size:11px;color:var(--muted)}
.po-btab.active .po-btab-meta{color:var(--brand);opacity:.75}

/* 主内容区 */
.po-main{flex:1;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:14px}

/* 信息网格 */
.po-info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 20px}
.po-cell{display:flex;flex-direction:column;gap:4px;min-width:0}
.po-cell .po-label{font-size:11px;color:var(--muted);letter-spacing:.02em}
.po-cell .po-value{font-size:14px;color:var(--fg);font-weight:500;padding:6px 8px;border-radius:6px;background:rgba(124,92,255,.04);border:1px solid rgba(124,92,255,.08);min-height:32px;display:flex;align-items:center;word-break:break-all}
.po-cell-edit .po-value{background:transparent;border:none;padding:0}
.po-input{width:100%;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg);font-size:13px;box-sizing:border-box;transition:border-color .15s}
.po-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px rgba(124,92,255,.15)}
.po-input-sm{padding:4px 8px;font-size:12px}
.po-suffix{margin-left:6px;font-size:12px;color:var(--muted)}
.po-cell-inline{display:flex;align-items:center;gap:6px}
.po-cell-inline .po-input{flex:1}

/* 延期预警 */
.po-warning{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:12px;background:rgba(255,80,80,.15);color:#ff5555;font-size:12px;font-weight:600;border:1px solid rgba(255,80,80,.3)}
.po-warning::before{content:"⚠";font-size:13px}
.po-warning-toggle,.po-done-toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--fg);cursor:pointer;user-select:none}
.po-warning-toggle input,.po-done-toggle input{accent-color:var(--brand);cursor:pointer}
.po-done-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:10px;background:rgba(80,200,120,.15);color:#4ade80;font-size:12px;font-weight:600;border:1px solid rgba(80,200,120,.3)}
.po-done-badge::before{content:"✓";font-weight:700}

/* 出货统计行 */
.po-ship-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:14px;background:linear-gradient(135deg,rgba(124,92,255,.05),rgba(124,92,255,.02));border:1px solid rgba(124,92,255,.15);border-radius:10px;margin-top:auto}
.po-stat{display:flex;flex-direction:column;gap:4px;text-align:center}
.po-stat .po-stat-label{font-size:11px;color:var(--muted)}
.po-stat .po-stat-value{font-size:18px;font-weight:700;color:var(--brand)}
.po-stat .po-stat-sub{font-size:11px;color:var(--muted)}

/* 右侧图片面板 */
.po-images{width:260px;flex-shrink:0;display:flex;flex-direction:column;gap:12px}
.po-img-box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}
.po-img-title{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.03em}
.po-img-slot{width:100%;aspect-ratio:1;border-radius:8px;overflow:hidden;position:relative;background:var(--bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.po-img-slot img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;transition:transform .2s}
.po-img-slot img:hover{transform:scale(1.03)}
.po-img-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);font-size:12px;gap:6px}
.po-img-empty::before{content:"📷";font-size:24px;opacity:.5}
.po-img-actions{display:flex;gap:6px}
.po-img-upload{flex:1;padding:5px 8px;font-size:12px;text-align:center;border:1px dashed var(--line);border-radius:6px;cursor:pointer;color:var(--muted);transition:all .15s;background:var(--bg)}
.po-img-upload:hover{border-color:var(--brand);color:var(--brand);background:rgba(124,92,255,.05)}
.po-img-upload input{display:none}

/* 底部占位块（PPT右下角图片） */
.po-images .po-img-box.po-img-large .po-img-slot{aspect-ratio:auto;min-height:180px}

/* 响应式：窄屏折叠 */
@media (max-width:1100px){
  .po-body{flex-direction:column}
  .po-batches{width:auto;max-height:none;flex-direction:row;overflow-x:auto;overflow-y:hidden}
  .po-btab{min-width:120px}
  .po-images{width:auto;flex-direction:row}
  .po-img-box{flex:1}
  .po-info-grid{grid-template-columns:repeat(2,1fr)}
  .po-ship-stats{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:600px){
  .po-info-grid{grid-template-columns:1fr}
  .po-images{flex-direction:column}
}

/* ====== 订单信息 v2: 信息面板 + 单字段就地编辑 ====== */
.po-batches-head{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.05em;padding:6px 8px 4px;text-transform:uppercase}
.po-btab-title{font-size:13px;color:var(--fg);font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-btab-sub{font-size:11px;color:var(--muted);line-height:1.3}
.po-btab.active .po-btab-title{color:var(--brand)}
.po-btab.active .po-btab-sub{color:var(--brand);opacity:.75}
.po-pgroup{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.po-pgroup-title{font-size:12px;font-weight:700;color:var(--fg);padding:6px 8px 3px;border-bottom:1px dashed var(--line);letter-spacing:.02em}
.po-pgroup-archived{margin-top:16px;opacity:.75}
.po-pgroup-archived .po-pgroup-title{color:var(--muted);border-bottom-style:solid}
.po-btab-archived{background:transparent!important;border-color:transparent!important;color:var(--muted)!important}
.po-btab-archived .po-btab-title{color:var(--muted);font-weight:500;text-decoration:line-through;text-decoration-color:rgba(128,128,128,.4)}
.po-btab-archived .po-btab-sub{color:#4ade80;opacity:.7}
.po-btab-archived.active{background:rgba(120,120,120,.12)!important;border-color:rgba(120,120,120,.35)!important}
.po-btab-archived.active .po-btab-title{color:var(--fg);text-decoration:none}

/* 就地编辑 */
.po-cell .po-val{display:inline-block;padding:2px 6px;border-radius:4px;min-height:22px;transition:background .12s,box-shadow .12s}
.po-cell-inline .po-val{cursor:pointer;border-bottom:1px dashed transparent}
.po-cell-inline .po-val:hover{background:rgba(124,92,255,.08);border-bottom-color:rgba(124,92,255,.35)}
.po-cell.po-editing .po-val{background:transparent}
.po-clickable{cursor:pointer;border-bottom:1px dashed transparent;padding:2px 4px;border-radius:4px}
.po-clickable:hover{background:rgba(124,92,255,.08);border-bottom-color:rgba(124,92,255,.35)}
.po-inline-edit{display:inline-flex;align-items:center;gap:4px;background:var(--panel2);padding:2px 4px;border-radius:6px;border:1px solid var(--brand);box-shadow:0 0 0 2px rgba(124,92,255,.12)}
.po-inline-edit .po-input{padding:2px 6px;font-size:13px;border:none;background:transparent;box-shadow:none;min-width:60px;max-width:180px}
.po-inline-edit .po-input:focus{box-shadow:none}
.po-inline-ok,.po-inline-cancel{border:none;background:transparent;cursor:pointer;font-size:14px;padding:2px 6px;border-radius:4px;line-height:1}
.po-inline-ok{color:#22c55e}
.po-inline-ok:hover{background:rgba(34,197,94,.15)}
.po-inline-cancel{color:#ef4444}
.po-inline-cancel:hover{background:rgba(239,68,68,.15)}

/* 状态单元格 (延期预警 + 完结徽章 + 切换) */
.po-status-cell{display:flex;flex-direction:column;gap:6px;align-items:flex-start;justify-content:center;min-height:44px}
.po-warn-toggle{align-self:flex-start;font-size:11px}

/* 底部动作 */
.po-footer-actions{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:12px;border-top:1px dashed var(--line)}
.po-done-btn{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;padding:10px 22px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 8px rgba(245,158,11,.35);transition:transform .12s,box-shadow .12s}
.po-done-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(245,158,11,.45)}

/* 高亮统计 (未出货) */
.po-stat-hl{background:rgba(239,68,68,.08);border-radius:8px;padding:6px}
.po-stat-hl span{color:#ef4444!important}
.po-stat-hl b{color:#ef4444!important}

/* 空状态 */
.po-empty-hero{text-align:center;padding:80px 20px;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center}
.po-empty-hero h2{color:var(--fg);font-weight:600}

/* ========== 合作方: 新 Hub (3 卡片) ========== */
.ps-hub{min-height:100vh;background:var(--bg);color:var(--fg);padding:24px 32px;display:flex;flex-direction:column}
.ps-main-full{flex:1;width:100%}
.ps-hub-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:28px}
.ps-hub-title{display:flex;align-items:center;gap:14px}
.ps-hub-logo{width:56px;height:56px;border-radius:12px;object-fit:cover;background:var(--panel2)}
.ps-hub-title h1{margin:0;font-size:24px;font-weight:700;background:linear-gradient(135deg,#ff5c8a,#7c5cff);-webkit-background-clip:text;background-clip:text;color:transparent}
.ps-hub-user{font-size:13px;color:var(--muted);margin-top:3px}
.ps-hub-user .ps-role{color:var(--brand);font-weight:600;margin-right:4px}
.ps-hub-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:1100px;margin:24px auto 0;width:100%}
.ps-hub-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px 22px;text-align:center;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}
.ps-hub-card:hover{transform:translateY(-3px);border-color:var(--brand);box-shadow:0 8px 24px rgba(124,92,255,.15)}
.ps-hub-icon{font-size:48px;margin-bottom:10px;line-height:1}
.ps-hub-name{font-size:19px;font-weight:700;color:var(--fg);margin-bottom:6px}
.ps-hub-desc{font-size:12.5px;color:var(--muted);line-height:1.5}
@media (max-width:900px){.ps-hub-cards{grid-template-columns:1fr;gap:14px}}

/* 合作方页面页头 */
.ps-page-head{padding:8px 0 18px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.ps-page-head h2{margin:0 0 4px;font-size:22px;font-weight:700;color:var(--fg)}
.ps-page-head p{margin:4px 0 0;font-size:13px;color:var(--muted)}
.ps-page-head .ps-back{margin-bottom:10px}
.ps-back{margin-bottom:8px}

/* 合作方图稿页头 (含项目选择器) */
.ps-artwork-head{display:flex;align-items:center;gap:10px;margin-top:8px}
.ps-aw-hint{font-size:12px;color:var(--muted)}

/* ========== 合作方生产订单详情 (无侧边栏) ========== */
.po-project-name-row{margin:6px 0 16px}
.po-project-name{font-size:26px;font-weight:700;color:var(--fg);line-height:1.25;letter-spacing:-.01em}
.po-project-sub{font-size:13px;color:var(--muted);margin-top:4px}

/* 横向批次选择网格 */
.po-batches-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:18px;padding:10px;background:var(--panel2);border:1px solid var(--line);border-radius:10px}
.po-bgrid-card{position:relative;padding:10px 12px;border-radius:8px;background:var(--panel);border:1px solid var(--line);cursor:pointer;transition:border-color .15s,background .15s,transform .12s}
.po-bgrid-card:hover{border-color:var(--brand);transform:translateY(-1px)}
.po-bgrid-card.active{border-color:var(--brand);background:linear-gradient(135deg,rgba(124,92,255,.08),rgba(124,92,255,.03));box-shadow:0 0 0 2px rgba(124,92,255,.12)}
.po-bgrid-card.done{opacity:.55}
.po-bgrid-name{font-size:14px;font-weight:600;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-bgrid-sub{font-size:11px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-bgrid-done{position:absolute;top:6px;right:8px;font-size:10px;color:#0a8f4a;background:rgba(10,143,74,.12);padding:1px 6px;border-radius:8px}

/* 双列产品图 (取代右侧 aside) */
.po-img-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}
@media (max-width:700px){.po-img-row{grid-template-columns:1fr}}

/* ========== 图稿分类网格 (内外部通用 2 列) ========== */
.po-artwork-grid{display:flex;flex-direction:column;gap:18px;margin-top:6px}
.po-artwork-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.po-artwork-row > .po-artwork-section.empty{background:transparent;border:none}
.po-artwork-section{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:16px 18px;min-height:120px}
.po-artwork-head{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px dashed var(--line)}
.po-artwork-head h4{margin:0;font-size:15px;font-weight:700;color:var(--fg)}
.po-artwork-count{margin-left:auto;font-size:12px;color:var(--muted);font-weight:500}
.po-artwork-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.po-artwork-item{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s,transform .12s}
.po-artwork-item:hover{border-color:var(--brand);transform:translateY(-1px)}
.po-artwork-thumb{position:relative;aspect-ratio:1;overflow:hidden;background:var(--panel2)}
.po-artwork-thumb img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;transition:transform .15s}
.po-artwork-thumb img:hover{transform:scale(1.05)}
.aw-src-nas,.aw-src-up{position:absolute;top:4px;right:4px;font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;background:rgba(0,0,0,.6);color:#fff;backdrop-filter:blur(4px)}
.aw-src-nas{background:rgba(59,130,246,.85)}
.aw-src-up{background:rgba(34,197,94,.85)}
.po-artwork-info{padding:6px 8px;display:flex;flex-direction:column;gap:2px}
.po-artwork-name{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg)}
.po-artwork-meta{font-size:10.5px;color:var(--muted)}
.po-artwork-actions{padding:4px 6px 6px;display:flex;gap:4px;border-top:1px dashed var(--line);background:var(--panel)}
.po-artwork-empty{grid-column:1/-1;text-align:center;padding:22px 12px;color:var(--muted);font-size:13px}
@media (max-width:900px){.po-artwork-row{grid-template-columns:1fr}}

/* 合作方灯箱 (data-ps-lightbox) */

/* ========== 订单信息: label/value 层级区分 ==========
   按用户要求: 标签字段 (合同编号, 订单总数 ...) 比对应的值字号更大更粗, 从而与可编辑值明显区分 */
.po-cell{display:flex;flex-direction:column;gap:3px;min-width:0}
.po-cell > label{display:block;font-size:15px;font-weight:700;color:var(--fg);letter-spacing:.01em;text-transform:none;line-height:1.3}
.po-cell > span{display:block;font-size:13px;font-weight:500;color:var(--fg);opacity:.82;line-height:1.4;letter-spacing:0;word-break:break-all}

/* 内部管理订单: 同步把标签加大加粗, 值稍小 */
.po-cell .po-label{font-size:15px;font-weight:700;color:var(--fg);letter-spacing:.01em}
.po-cell .po-val{font-size:13px;font-weight:500;color:var(--fg);opacity:.82;line-height:1.4;letter-spacing:0}

/* 出货统计: 标签加大加粗 + 数值稍小灰 (与订单信息保持一致) */
.po-ship-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:14px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;margin-top:14px}
.po-ship-stats .po-stat{display:flex;flex-direction:column;gap:3px;padding:4px 6px}
.po-ship-stats .po-stat > span{font-size:15px;font-weight:700;color:var(--fg);letter-spacing:.01em}
.po-ship-stats .po-stat > b{font-size:15px;font-weight:600;color:var(--fg);opacity:.82;letter-spacing:0}
@media (max-width:700px){.po-ship-stats{grid-template-columns:repeat(2,1fr)}}

/* ========== 合作方生产订单: 顶部项目条 (横向滚动) ========== */
.po-strip{display:flex;gap:12px;overflow-x:auto;padding:6px 4px 14px;margin-bottom:14px;border-bottom:1px solid var(--line);scroll-behavior:smooth}
.po-strip::-webkit-scrollbar{height:8px}
.po-strip::-webkit-scrollbar-thumb{background:rgba(124,92,255,.25);border-radius:4px}
.po-strip::-webkit-scrollbar-thumb:hover{background:rgba(124,92,255,.4)}

.po-strip-card{flex:0 0 260px;display:flex;gap:10px;padding:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .12s}
.po-strip-card:hover{border-color:var(--brand);box-shadow:0 4px 10px rgba(124,92,255,.12);transform:translateY(-1px)}
.po-strip-card.active{border-color:var(--brand);box-shadow:0 0 0 2px rgba(124,92,255,.2),0 4px 12px rgba(124,92,255,.18);background:linear-gradient(135deg,rgba(124,92,255,.06),rgba(124,92,255,.02))}
.po-strip-thumb{flex:0 0 72px;width:72px;height:72px;border-radius:8px;overflow:hidden;background:var(--panel2);display:flex;align-items:center;justify-content:center}
.po-strip-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.po-strip-thumb-empty{font-size:28px;opacity:.4}
.po-strip-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.po-strip-name{font-size:14px;font-weight:700;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.po-strip-meta{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.po-strip-card.active .po-strip-name{color:var(--brand)}

.po-detail-anchor{min-height:200px}

@media (max-width:900px){.po-strip-card{flex:0 0 220px}}

/* ========== 订单信息 v2 布局 (合作方) ========== */
.po-page-v2{display:flex;flex-direction:column;gap:18px;padding:16px 4px 32px}

/* --- 项目名 (左) + 工厂/对接人/地址/联系方式 竖向堆叠 (右) --- */
.po-proj-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:24px;align-items:stretch;padding:16px 20px;background:linear-gradient(135deg,rgba(124,92,255,.05),transparent 60%);border:1px solid var(--line);border-radius:10px}
.po-proj-title{display:flex;flex-direction:column;gap:8px;min-width:0}
.po-proj-title > label{font-size:15px;font-weight:700;color:var(--muted);letter-spacing:.02em}
.po-proj-name{font-size:24px;font-weight:800;color:var(--fg);line-height:1.25;letter-spacing:.01em;word-break:break-all}
.po-proj-sub{font-size:12px;color:var(--muted);font-weight:500}
.po-status-inline{display:flex;align-items:center;gap:12px;margin-top:8px}
.po-status-inline > label{font-size:15px;font-weight:700;color:var(--muted);letter-spacing:.02em}

/* 右侧工厂/对接人/地址/联系方式 垂直堆叠 */
.po-factory-stack{display:flex;flex-direction:column;gap:10px;min-width:0;padding-left:20px;border-left:1px dashed var(--line)}
.po-fcell{display:flex;align-items:baseline;gap:12px;min-width:0}
.po-fcell > label{flex:0 0 auto;font-size:15px;font-weight:800;color:var(--fg);letter-spacing:.02em;line-height:1.3;min-width:64px}
.po-fcell > span{flex:1;min-width:0;font-size:13px;font-weight:500;color:var(--fg);opacity:.85;line-height:1.4;word-break:break-all;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* --- 生产状态 pill --- */
.po-status-block{display:flex;flex-direction:column;gap:6px;align-items:flex-end;flex:0 0 auto}
.po-status-block > label{font-size:15px;font-weight:700;color:var(--muted);letter-spacing:.02em}
.po-status-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:22px;font-size:14px;font-weight:700;letter-spacing:.02em;border:1.5px solid transparent;transition:all .15s}
.po-status-pill .po-status-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.po-status-pill.ongoing{background:rgba(255,159,60,.12);color:#d97706;border-color:rgba(255,159,60,.35)}
.po-status-pill.ongoing .po-status-dot{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.2);animation:po-pulse 1.6s ease-in-out infinite}
.po-status-pill.done{background:rgba(10,143,74,.12);color:#0a8f4a;border-color:rgba(10,143,74,.35)}
.po-status-pill.done .po-status-dot{background:#0a8f4a}
@keyframes po-pulse{0%,100%{box-shadow:0 0 0 3px rgba(245,158,11,.2)}50%{box-shadow:0 0 0 5px rgba(245,158,11,.05)}}

/* --- 4 列信息行 (合同编号 / 订单总数 x3) --- */
.po-row-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px;padding:14px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.po-row-4 .po-cell{display:flex;flex-direction:column;gap:4px;min-width:0}
.po-row-4 .po-cell > label{font-size:15px;font-weight:700;color:var(--fg);letter-spacing:.02em}
.po-row-4 .po-cell > span{font-size:14px;font-weight:500;color:var(--fg);opacity:.85;word-break:break-all}

/* --- 5 列信息行 (英文名 / 材质成份 / 零售价 / 外包装规格 / 合同编号) --- */
.po-row-5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px 24px;padding:14px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.po-row-5 .po-cell{display:flex;flex-direction:column;gap:4px;min-width:0}
.po-row-5 .po-cell > label{font-size:15px;font-weight:700;color:var(--fg);letter-spacing:.02em}
.po-row-5 .po-cell > span{font-size:14px;font-weight:500;color:var(--fg);opacity:.85;word-break:break-all}

/* --- 7 列出货信息行 (订单总数x3 + 预估出货时间 + 全部出货时间 + 已出货 + 库存剩余) --- */
.po-ship-row-7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px 16px;padding:14px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.po-ship-row-7 .po-cell{display:flex;flex-direction:column;gap:4px;min-width:0}
.po-ship-row-7 .po-cell > label{font-size:15px;font-weight:800;color:var(--fg);letter-spacing:.02em;line-height:1.3}
.po-ship-row-7 .po-cell > span{font-size:14px;font-weight:500;color:var(--fg);opacity:.85;word-break:break-all;line-height:1.4}

/* --- 出货信息合成一整块: 4 字段横排一行 + 大货图/生产图 并列两格 --- */
.po-ship-col{display:flex;flex-direction:column;gap:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.po-ship-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px;padding:14px 20px;border-bottom:1px dashed var(--line)}
.po-ship-row .po-cell{display:flex;flex-direction:column;gap:4px;min-width:0}
.po-ship-row .po-cell > label{font-size:15px;font-weight:800;color:var(--fg);letter-spacing:.02em;line-height:1.3}
.po-ship-row .po-cell > span{font-size:14px;font-weight:500;color:var(--fg);opacity:.85;word-break:break-all;line-height:1.4}
.po-img-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:16px 20px}
.po-img-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:16px 20px}
.po-img-cell{display:flex;flex-direction:column;gap:8px;min-width:0}
.po-img-cell > label{font-size:15px;font-weight:800;color:var(--fg);letter-spacing:.02em}
.po-img-cell .po-img-slot{flex:1;min-height:160px;max-height:260px;background:var(--panel2);border:1px dashed var(--line);border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.po-img-cell .po-img-slot img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;transition:transform .2s}
.po-img-cell .po-img-slot img:hover{transform:scale(1.02)}
.po-img-cell .po-img-empty{color:var(--muted);font-size:13px;padding:20px}

/* --- 规格矩阵: 配比左侧跨 3 行, 右侧 3x3 --- */
.po-specs-matrix{display:grid;grid-template-columns:minmax(180px,1.2fr) repeat(3,minmax(0,1fr));gap:16px 20px;padding:16px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.po-ratio-cell{grid-row:1 / span 3;display:flex;flex-direction:column;gap:8px;padding-right:16px;border-right:1px dashed var(--line);min-width:0}
.po-ratio-cell > label{font-size:18px;font-weight:800;color:var(--fg);letter-spacing:.02em}
.po-ratio-val{font-size:14px;font-weight:500;color:var(--fg);opacity:.85;line-height:1.6;word-break:break-all;white-space:pre-line}
.po-ratio-placeholder{display:none} /* 因 grid-row span, 占位 div 不再需要 */
.po-specs-matrix .po-cell{display:flex;flex-direction:column;gap:4px;min-width:0}
.po-specs-matrix .po-cell > label{font-size:15px;font-weight:700;color:var(--fg);letter-spacing:.02em}
.po-specs-matrix .po-cell > span{font-size:14px;font-weight:500;color:var(--fg);opacity:.85;word-break:break-all}

/* --- 分隔线 --- */
.po-sep{border:0;border-top:1px solid var(--line);margin:4px 0}

/* --- 产品玩法 --- */
.po-play{display:flex;flex-direction:column;gap:8px;padding:14px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.po-play > label{font-size:16px;font-weight:800;color:var(--fg);letter-spacing:.02em}
.po-play-body{font-size:14px;line-height:1.7;color:var(--fg);opacity:.9;white-space:pre-wrap}
.po-intro-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:14px 20px}
.po-intro-row-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:14px 20px;align-items:stretch}
.po-intro-cell{display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.po-intro-cell > label{font-size:15px;font-weight:800;color:var(--fg);letter-spacing:.02em}
.po-intro-body{font-size:14px;line-height:1.6;color:var(--fg);opacity:.9;white-space:pre-wrap;flex:1}

/* --- 版权文件 / 检测报告 双列 --- */
.po-files-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.po-files-block{display:flex;flex-direction:column;gap:8px;padding:14px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px;min-height:120px}
.po-files-block > label{font-size:16px;font-weight:800;color:var(--fg);letter-spacing:.02em}
.po-files-body{flex:1;font-size:13px}
.po-file-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.po-file-list li a{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:6px;color:var(--fg);text-decoration:none;transition:border-color .15s,background .15s;font-size:13px}
.po-file-list li a:hover{border-color:var(--brand);background:rgba(124,92,255,.06);color:var(--brand)}
.po-empty-inline{color:var(--muted);font-size:13px;font-style:italic}

/* 可编辑文件列表 (内部管理员用): 每项右侧带删除按钮 */
.po-file-list-edit li{display:flex;align-items:center;gap:8px;justify-content:space-between}
.po-file-list-edit li a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-file-size{color:var(--muted);font-size:11px;font-weight:400;margin-left:4px}
.po-file-del{flex:none;background:transparent;border:1px solid var(--line);border-radius:6px;padding:4px 8px;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;transition:border-color .15s,color .15s,background .15s}
.po-file-del:hover{border-color:#e14b4b;color:#e14b4b;background:rgba(225,75,75,.08)}

@media (max-width:900px){
  .po-proj-row{grid-template-columns:1fr}
  .po-factory-stack{padding-left:0;border-left:0;border-top:1px dashed var(--line);padding-top:14px}
  .po-row-4{grid-template-columns:repeat(2,1fr)}
  .po-row-5{grid-template-columns:repeat(2,1fr)}
  .po-ship-row{grid-template-columns:repeat(2,1fr)}
  .po-ship-row-7{grid-template-columns:repeat(3,1fr)}
  .po-img-pair{grid-template-columns:1fr}
  .po-img-grid{grid-template-columns:repeat(2,1fr)}
  .po-intro-row{grid-template-columns:1fr}
  .po-intro-row-3{grid-template-columns:1fr}
  .po-specs-matrix{grid-template-columns:repeat(2,1fr)}
  .po-ratio-cell{grid-row:auto;grid-column:1 / -1;padding-right:0;border-right:0;border-bottom:1px dashed var(--line);padding-bottom:12px}
  .po-files-row{grid-template-columns:1fr}
}

/* ========== 产品信息管理 · 订单信息 v2 (与合作方视图共用样式, 增加侧栏布局) ========== */
.po-page-admin-v2{padding:0}
.po-page-admin-v2 .po-body-v2{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;padding:16px;align-items:start}
.po-page-admin-v2 .po-batches{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px;max-height:calc(100vh - 140px);overflow-y:auto;position:sticky;top:16px}
.po-page-admin-v2 .po-main{min-width:0}
.po-page-admin-v2 .po-page-v2{padding:0}

/* 图片格内的上传/删除按钮 */
.po-img-cell > label{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.po-img-btn{font-size:11px;padding:2px 8px}

/* textarea 就地编辑 */
.po-inline-edit .po-textarea{width:100%;min-height:100px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:14px;line-height:1.6;resize:vertical;background:var(--panel2);color:var(--fg)}

/* 项目行内 pill 按钮 (可点击) 也保留视觉一致 */
.po-status-inline .po-status-pill{cursor:pointer;font:inherit}
.po-status-inline .po-warning{background:rgba(220,53,69,.12);color:#dc3545;padding:4px 10px;border-radius:14px;font-size:12px;font-weight:600;border:1px solid rgba(220,53,69,.35)}

@media (max-width:900px){
  .po-page-admin-v2 .po-body-v2{grid-template-columns:1fr}
  .po-page-admin-v2 .po-batches{position:static;max-height:none}
}

/* 图稿文档文件缩略图 & 上传预览 */
.aw-up-doc{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);font-size:16px;font-weight:700;color:var(--brand2)}
.aw-up-doc span{padding:4px 8px;border-radius:4px;background:rgba(124,92,255,.12)}
.aw-doc-badge{position:absolute;bottom:6px;right:6px;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;background:rgba(124,92,255,.85);letter-spacing:.5px;pointer-events:none;backdrop-filter:blur(4px)}

/* ===== 二级子流程面板 (卡片布局) ===== */
.sw-panel{margin-top:16px}
.sw-grid{display:flex;flex-wrap:wrap;gap:10px}
.sw-card{flex:1;min-width:180px;max-width:280px;border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--panel2);transition:all .2s;display:flex;flex-direction:column;gap:6px;position:relative}
.sw-card:hover{border-color:var(--brand2);box-shadow:0 2px 12px rgba(124,92,255,.1)}
.sw-card.sw-progress{border-top:3px solid var(--info)}
.sw-card.sw-review{border-top:3px solid var(--warn)}
.sw-card.sw-editing{border-top:3px solid var(--danger)}
.sw-card.sw-done{border-top:3px solid var(--ok)}
.sw-card-head{display:flex;align-items:center;gap:6px;justify-content:space-between}
.sw-card-name{font-weight:700;font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sw-card-status{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;white-space:nowrap}
.sw-card-status.st-not_started{background:var(--panel);color:var(--muted)}
.sw-card-status.st-in_progress{background:rgba(56,189,248,.15);color:var(--info)}
.sw-card-status.st-awaiting_review{background:rgba(245,158,11,.15);color:var(--warn)}
.sw-card-status.st-editing{background:rgba(239,68,68,.15);color:var(--danger)}
.sw-card-status.st-completed{background:rgba(34,197,94,.15);color:var(--ok)}
.sw-card-meta{font-size:11px;color:var(--muted);line-height:1.6}
.sw-card-meta span{display:inline-block;margin-right:8px}


.sw-card-files{font-size:11px;margin-top:2px}
.sw-card-files .file-item{display:flex;align-items:center;gap:4px;padding:2px 0}
.sw-card-files .file-item a{color:var(--info);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}
.sw-card-files .file-item a:hover{text-decoration:underline}
.sw-card-actions{display:flex;gap:4px;flex-wrap:wrap;margin-top:auto;padding-top:4px;border-top:1px solid var(--line)}
.sw-card-actions .btn{font-size:10px;padding:3px 8px;flex:1;min-width:0;text-align:center}

/* Phase3: 时间管理样式 */
.wt-btn{transition:all .15s;cursor:pointer;border:1px solid var(--line)}
.wt-btn:hover{border-color:#f59e0b!important;background:transparent;color:var(--text);font-weight:700}
.sw-mark-waiting-btn{background:#f59e0b22;color:#d97706;border:1px solid #f59e0b44}
.sw-mark-waiting-btn:hover{background:transparent;color:#d97706;border-color:#f59e0b;font-weight:700}
.sw-unmark-waiting-btn{border:none}
.sw-set-time-btn{background:#3b82f622;color:#3b82f6;border:1px solid #3b82f644}
.sw-set-time-btn:hover{background:transparent;color:#3b82f6;border-color:#f59e0b;font-weight:700}
.sw-time-btn{background:#8b5cf622;color:#8b5cf6;border:1px solid #8b5cf644}
.sw-time-btn:hover{background:transparent;color:#8b5cf6;border-color:#f59e0b;font-weight:700}
.time-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.time-grid>div{background:var(--card);padding:8px;border-radius:6px;text-align:center}
.time-grid>div>div:first-child{color:var(--muted);font-size:10px}
.time-grid>div>b{font-size:14px}
.time-range-btn{transition:all .15s;cursor:pointer;font-size:11px;padding:4px 10px;border-radius:4px;border:1px solid var(--line);background:transparent}
.time-range-btn.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700}
.time-range-btn:hover{border-color:var(--primary)}
/* Phase4: 工时/加班/出差 */
.sw-work-time-btn{background:#10b98122;color:#10b981;border:1px solid #10b98144}
.sw-overtime-btn{background:#8b5cf622;color:#8b5cf6;border:1px solid #8b5cf644}
.ht-btn{transition:all .15s;cursor:pointer;border:1px solid var(--line);padding:3px 8px;border-radius:4px;font-size:11px}
.ht-btn:hover{border-color:#f59e0b!important;background:transparent;color:var(--text);font-weight:700}
.ht-btn.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700}
/* Phase5: 数据看板与产能分析 */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:16px 0}
.dash-card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px;text-align:center}
.dash-card .label{color:var(--muted);font-size:11px;margin-bottom:4px}
.dash-card .value{font-size:22px;font-weight:700}
.dash-card .sub{font-size:11px;color:var(--muted);margin-top:2px}
.dash-section{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px;margin:16px 0}
.dash-section h3{margin:0 0 12px;font-size:14px;display:flex;align-items:center;gap:6px}
.dash-row{display:flex;gap:16px;flex-wrap:wrap;margin:12px 0}
.dash-row>.dash-card{flex:1;min-width:140px}
.h-bar{display:flex;align-items:center;gap:8px;margin:4px 0}
.h-bar .h-label{width:80px;font-size:11px;color:var(--muted);text-align:right}
.h-bar .h-track{flex:1;height:18px;background:var(--line);border-radius:4px;overflow:hidden;position:relative}
.h-bar .h-fill{height:100%;border-radius:4px;transition:width .3s}
.h-bar .h-val{width:50px;font-size:11px;text-align:left}
.dash-table{width:100%;border-collapse:collapse;font-size:12px}
.dash-table th,.dash-table td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}
.dash-table th{color:var(--muted);font-weight:500;cursor:pointer;user-select:none}
.dash-table th:hover{color:var(--primary)}
.dash-table tr:hover{background:var(--line)}
.load-green{color:#10b981}.load-yellow{color:#f59e0b}.load-red{color:#ef4444}.load-gray{color:var(--muted)}
.load-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}
.load-badge.green{background:#10b98122;color:#10b981}
.load-badge.yellow{background:#f59e0b22;color:#f59e0b}
.load-badge.red{background:#ef444422;color:#ef4444}
.load-badge.gray{background:var(--line);color:var(--muted)}
.alert-card{background:var(--card);border-left:4px solid var(--warn);border-radius:0 8px 8px 0;padding:12px 16px;margin:8px 0}
.alert-card .rule-tag{font-size:10px;font-weight:600;padding:1px 6px;border-radius:3px;background:var(--warn);color:#fff;margin-right:6px}
.alert-card .alert-msg{font-size:12px;margin-top:4px}
.alert-card .alert-data{font-size:11px;color:var(--muted);margin-top:4px}
.timeline-list{position:relative;padding-left:24px}
.timeline-list::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--line)}
.timeline-item{position:relative;margin:8px 0;padding:8px 0}
.timeline-item::before{content:'';position:absolute;left:-20px;top:12px;width:10px;height:10px;border-radius:50%;background:var(--primary);border:2px solid var(--card)}
.timeline-item .tl-time{font-size:10px;color:var(--muted)}
.timeline-item .tl-desc{font-size:12px;margin-top:2px}
.timeline-item .tl-type{font-size:10px;padding:1px 6px;border-radius:3px;background:var(--line);color:var(--muted)}
.chart-container{position:relative;width:100%;max-width:600px;margin:12px auto}
.chart-container canvas{width:100%!important}
.metric-selector{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.metric-selector label{font-size:11px;padding:3px 8px;border:1px solid var(--line);border-radius:4px;cursor:pointer}
.metric-selector label.active{background:transparent;color:var(--text);border:2px solid #f59e0b;font-weight:700}
.metric-selector input{display:none}

/* ============================================================
   Phase 6 — Character Cards + Large Overlay (Redesigned)
   ============================================================ */

/* --- Status color tokens --- */
:root {
  --p6-completed: #10b981;
  --p6-in_progress: #3b82f6;
  --p6-awaiting_review: #f59e0b;
  --p6-editing: #8b5cf6;
  --p6-not_started: #94a3b8;
  --p6-cancelled: #ef4444;
}

/* 1. Two-column layout: cards (left) + list (right) */
.p6-two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 12px;
}
@media (max-width: 900px) {
  .p6-two-col { grid-template-columns: 1fr; }
}

/* 2. Character Card Grid */
.p6-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: 12px;
}
.p6-task-board-scroll{max-height:570px;overflow-y:auto;scrollbar-gutter:stable;padding:2px 4px 4px 2px}
.p6-task-card{min-height:0}
.p6-task-priority{display:flex;width:100%;height:42px;align-items:center;gap:8px;border:0;border-bottom:1px solid rgba(255,255,255,.16);color:#fff;font:700 15px/1 inherit;letter-spacing:.03em;cursor:pointer;text-align:left;padding:0 12px}
.ui-icon-priority{width:30px;height:30px}
.p6-task-priority:disabled{cursor:default;opacity:1}
.priority-low{background:#64748b}.priority-medium{background:#0f9f8f}.priority-high{background:#d97706}.priority-urgent{background:#dc2626}
.priority-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.priority-option{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 8px;border-radius:9px;color:#fff;cursor:pointer;font-weight:700}
.priority-option input{accent-color:#fff}
.p6-task-card .p6-card-body{padding:13px 14px 14px}
.p6-task-card .p6-card-name{font-size:16px;line-height:1.35;margin-bottom:8px}
.p6-task-card .p6-card-info{font-size:13px;margin-top:8px}
.p6-task-card .p6-card-meta-item{font-size:12px}

/* 2026-08-21 线性任务卡 / 独立任务卡：统一员工执行界面 */
.unified-task-grid{grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;justify-content:stretch;align-items:start}
.unified-task-card{height:255px;min-height:255px;border-radius:12px;cursor:default;display:flex;flex-direction:column;background:var(--card)}
.unified-task-card:hover{transform:none}
.task-card-header{height:41px;min-height:41px;display:grid;grid-template-columns:minmax(0,48%) minmax(0,52%);align-items:stretch;color:#fff;border-bottom:1px solid rgba(255,255,255,.2)}
.task-card-state-button,.task-card-header-meta{border:0;background:transparent;color:inherit;font-family:inherit}
.task-card-state-button{min-width:0;padding:0 5px;text-align:left;font-size:clamp(12px,1vw,20px);font-weight:800;letter-spacing:.01em;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task-card-state-button:disabled{cursor:default;opacity:1}
.task-card-header-meta{min-width:0;display:flex;align-items:center;justify-content:flex-end;padding:0 4px;font-size:clamp(8px,.62vw,11px);font-weight:700;text-align:right;line-height:1.2;overflow:hidden;overflow-wrap:anywhere}
.unified-task-card[data-unit-id] .task-card-header-meta{font-size:clamp(13.52px,1.0478vw,18.59px)}
button.task-card-header-meta{cursor:pointer}
button.task-card-header-meta:disabled{cursor:default;opacity:1}
button.task-card-priority.priority-low{background:#64748b}
button.task-card-priority.priority-medium{background:#0f9f8f}
button.task-card-priority.priority-high{background:#d97706}
button.task-card-priority.priority-urgent{background:#dc2626}
.task-state-idle .task-card-header{background:#159f91}
.task-state-working .task-card-header{background:#ff5a38}
.task-state-paused .task-card-header{background:#c9472f}
.task-state-review .task-card-header{background:#d58b18}
.task-state-completed .task-card-header{background:#168a63}
.task-state-terminated .task-card-header{background:#667085}
.task-card-body{flex:1;display:flex;flex-direction:column;padding:11px clamp(5px,.68vw,10px) 12px;min-height:0}
.task-card-title-row{height:59px;display:grid;grid-template-columns:7px minmax(0,1fr) clamp(36px,2.55vw,49px);align-items:center;gap:clamp(3px,.42vw,7px)}
.task-card-bullet{width:7px;height:7px;border-radius:50%;background:var(--muted)}
.task-card-title-row h3{margin:0;font-size:clamp(11px,.85vw,15px);line-height:1.22;font-weight:750;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}
.task-card-name-button{display:block;width:100%;padding:2px 3px;border:1px solid transparent;border-radius:5px;background:transparent;color:inherit;font:inherit;line-height:inherit;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.task-card-name-button:hover{border-color:var(--brand2);color:var(--brand2);background:color-mix(in srgb,var(--brand2) 8%,transparent)}
.task-card-thumb{width:clamp(36px,2.55vw,49px);height:clamp(36px,2.55vw,49px);padding:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--panel2);color:inherit;font:inherit;display:flex;align-items:center;justify-content:center}
.task-card-thumb-upload{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.task-card-thumb-upload:hover,.task-card-thumb-upload:focus-visible{border-color:var(--brand2);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand2) 22%,transparent);transform:translateY(-1px);outline:none}
.task-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.task-card-thumb-empty{padding:4px;color:var(--muted);font-size:8px;line-height:1.2;text-align:center}
.task-card-progress{height:5px;border-radius:4px;background:var(--line);overflow:hidden;margin:0 0 9px}
.task-card-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--brand2));transition:width .2s}
.task-card-plan-row{height:32px;display:grid;grid-template-columns:51px minmax(0,1fr);align-items:center;gap:5px}
.task-card-plan-row>span,.task-card-owner-row>span{color:var(--muted);font-size:11px}
.task-card-plan{min-width:0;padding:3px 5px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);font-family:inherit;text-align:left}
.task-card-plan b{display:block;font-size:11px;font-weight:650;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-card-plan b em{margin-left:7px;padding:2px 5px;border-radius:5px;background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn);font-size:10px;font-style:normal}
.task-card-plan.is-editable{cursor:pointer}.task-card-plan.is-editable:hover{border-color:color-mix(in srgb,var(--brand2) 42%,var(--line));background:color-mix(in srgb,var(--brand2) 8%,transparent)}.task-card-plan.is-editable:hover b{color:var(--brand2)}
.task-card-plan:disabled{opacity:1}
.task-card-owner-row{height:34px;display:grid;grid-template-columns:51px minmax(0,1fr);align-items:center;gap:5px}
.task-card-owner{justify-self:start;max-width:100%;padding:3px 2px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text);font-family:inherit;font-size:11px;font-weight:700;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-card-owner:disabled{opacity:1}.task-card-owner.is-editable{cursor:pointer;color:var(--info)}.task-card-owner.is-editable:hover{border-color:var(--info);background:color-mix(in srgb,var(--info) 9%,transparent)}
.task-card-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;margin-top:8px}
.task-card-actions .btn{height:32px;min-height:32px;min-width:0;padding:0;border-radius:7px;font-size:clamp(8px,.58vw,10px);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task-card-actions .btn:disabled{opacity:.34;cursor:not-allowed}
.task-card-detail{background:color-mix(in srgb,var(--brand2) 12%,var(--panel2));border-color:color-mix(in srgb,var(--brand2) 30%,var(--line));color:var(--brand2)}
.unified-task-card:not(:has(.task-card-terminate)):not(:has(.task-card-delete)) .task-card-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
.p6-task-board-scroll{max-height:1082px}
.priority-picker{grid-template-columns:repeat(4,1fr)}

.task-card-detail-overlay{width:min(1060px,94vw);height:auto;max-height:88vh}
.task-card-detail-overlay .p6-overlay-body{overflow-y:auto;padding:18px 20px 24px}
.linear-stage-list{display:grid;gap:12px}
.linear-stage-detail{display:grid;grid-template-columns:38px minmax(0,1fr) 64px 92px;gap:12px;align-items:center;min-height:92px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:10px;background:var(--panel2)}
.linear-stage-detail.task-state-working{border-left-color:#ff5a38}.linear-stage-detail.task-state-paused{border-left-color:#c9472f}.linear-stage-detail.task-state-review{border-left-color:#d58b18}.linear-stage-detail.task-state-completed{border-left-color:var(--ok)}
.linear-stage-index{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--line);font-weight:800}
.linear-stage-name{font-size:17px;font-weight:750}.linear-stage-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;color:var(--muted);font-size:12px}
.linear-stage-thumb{width:58px;height:58px;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--card);display:flex;align-items:center;justify-content:center}.linear-stage-thumb img{width:100%;height:100%;object-fit:cover}.linear-stage-thumb .task-card-thumb-empty{font-size:9px}
.task-detail-summary{display:grid;grid-template-columns:140px repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}
.task-detail-summary>div,.task-detail-state{min-height:64px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);display:flex;flex-direction:column;justify-content:center;gap:5px}
.task-detail-summary b{font-size:12px;color:var(--muted)}.task-detail-summary span{font-size:14px;font-weight:700}.task-detail-state{align-items:center;font-size:20px;font-weight:800;color:#fff;border:0}.task-detail-state.task-state-idle{background:#159f91}.task-detail-state.task-state-working{background:#ff5a38}.task-detail-state.task-state-paused{background:#c9472f}.task-detail-state.task-state-review{background:#d58b18}.task-detail-state.task-state-completed{background:#168a63}.task-detail-state.task-state-terminated{background:#667085}
.task-detail-section{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.task-detail-section h4{margin:0 0 12px;font-size:15px}
.task-history-version{padding:10px 0;border-top:1px solid var(--line)}.task-history-version:first-of-type{border-top:0}.task-history-version>div:first-child{display:flex;align-items:center;gap:10px}.task-history-version>div:first-child span{color:var(--muted);font-size:12px}.task-history-version em{margin-left:auto;color:var(--warn);font-style:normal;font-size:11px}.task-history-version p{margin:8px 0;color:var(--muted);font-size:12px}
.task-history-files{display:flex;gap:8px;flex-wrap:wrap}.task-history-file{width:108px;min-height:82px;padding:6px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--text);cursor:default;overflow:hidden}.task-history-file.is-image{cursor:pointer}.task-history-file img{width:94px;height:58px;object-fit:cover;border-radius:4px;display:block}.task-history-file b{display:block;margin-top:5px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task-time-line{position:relative;display:flex;gap:18px;align-items:stretch;overflow-x:auto;padding:12px 4px 8px;scrollbar-gutter:stable}.task-time-row{position:relative;flex:0 0 224px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:start;gap:10px;padding:18px 10px 10px;border-top:3px solid var(--ok);border-left:0;background:color-mix(in srgb,var(--ok) 5%,transparent);border-radius:0 0 8px 8px}.task-time-row:not(:last-child)::after{content:"";position:absolute;right:-18px;top:-3px;width:18px;height:3px;background:var(--danger)}.task-time-dot{position:absolute;left:10px;top:-8px;width:13px;height:13px;border-radius:50%;background:var(--ok);border:3px solid var(--panel2)}.task-time-row div{display:grid;gap:4px;min-width:0}.task-time-row span{color:var(--muted);font-size:11px;white-space:nowrap}.task-time-row strong{color:var(--ok);font-size:12px;white-space:nowrap}
.task-history-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line)}.task-history-row:first-of-type{border-top:0}.task-history-row>div{display:grid;gap:3px;flex:1}.task-history-row span,.task-history-row small{color:var(--muted);font-size:11px}.task-history-row em{font-style:normal;font-size:11px;font-weight:700}.plan-status-pending{color:var(--warn)}.plan-status-approved{color:var(--ok)}.plan-status-rejected{color:var(--danger)}

@media(max-width:1180px){.unified-task-grid{grid-template-columns:repeat(8,minmax(123px,1fr));overflow-x:auto;padding-bottom:6px}}
@media(max-width:760px){.unified-task-grid{grid-template-columns:repeat(8,minmax(123px,1fr))}.unified-task-card{height:255px}.task-card-state-button{font-size:17px}.task-card-header-meta{font-size:9px}.linear-stage-detail{grid-template-columns:32px minmax(0,1fr) 64px}.linear-stage-detail>.btn{grid-column:2/-1}.task-detail-summary{grid-template-columns:1fr}.task-card-detail-overlay{width:96vw}.priority-picker{grid-template-columns:repeat(2,1fr)}}

.light-task-board{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.light-task-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.light-task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;align-items:start}
.light-task-card{display:block;position:relative;border:1px solid var(--line);border-radius:9px;background:var(--panel2);padding:11px 12px;min-height:0;height:auto}
.light-task-card:last-child{border-bottom:1px solid var(--line)}
.light-task-card-head,.light-task-title-row,.light-task-meta{display:flex;align-items:center;gap:8px}
.light-task-card-head{justify-content:space-between;margin-bottom:9px}
.light-task-type{position:static;padding:3px 8px;border-radius:6px;background:rgba(100,116,139,.18);color:var(--muted);font-size:10px;font-weight:700}
.light-task-title-row{align-items:flex-start}
.light-task-card .stask-title{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;font-size:14px;line-height:1.45}
.light-task-name-button{padding:1px 3px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}.light-task-name-button:hover{border-color:var(--brand2);color:var(--brand2)}
.light-task-meta{justify-content:space-between;flex-wrap:wrap;margin-top:11px;padding-top:9px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}
.light-task-meta label{display:flex;align-items:center;gap:5px}
.light-task-card .panel-sel{width:auto;max-width:130px;padding:5px 7px;font-size:11px}
.light-task-owner-row{display:flex;align-items:center;gap:5px;min-width:0}
.light-task-owner{max-width:180px;padding:4px 7px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);font-family:inherit;font-size:11px;font-weight:700;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.light-task-owner:disabled{opacity:1}.light-task-owner.is-editable{cursor:pointer;color:var(--info)}.light-task-owner.is-editable:hover{border-color:var(--info);background:color-mix(in srgb,var(--info) 9%,transparent)}
.light-task-add{max-width:720px}

.task-reminder-panel{margin-top:16px;padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}
.task-reminder-panel .sec-head{margin-bottom:8px}
.task-reminder-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;align-items:start}
.task-reminder-card{display:flex;flex-direction:column;min-height:126px;padding:12px 13px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.task-reminder-card-head,.task-reminder-card-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.task-reminder-card-head{justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--line)}
.task-reminder-task{font-size:14px;font-weight:700}.task-reminder-time{color:var(--warn);font-size:11px;font-variant-numeric:tabular-nums}
.task-reminder-content{flex:1;padding:12px 0;white-space:normal;overflow-wrap:anywhere;font-size:13px;line-height:1.5}
.task-reminder-card-foot{color:var(--muted);font-size:11px}.task-reminder-owner{color:var(--info)}.task-reminder-method{padding:2px 6px;border-radius:5px;background:rgba(245,158,11,.12);color:var(--warn)}.task-reminder-cancel{margin-left:auto}

.global-reminder-banner{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:95;width:min(1400px,calc(100vw - 28px));display:flex;align-items:center;gap:20px;padding:16px 20px;border:2px solid rgba(245,158,11,.45);border-radius:18px;background:var(--panel);background:color-mix(in srgb,var(--panel) 94%,#f59e0b 6%);box-shadow:0 14px 38px rgba(0,0,0,.28)}
.global-reminder-label{flex:none;background:#f59e0b;color:#251500;border-radius:11px;padding:10px 18px;font-size:18px;font-weight:800}
.global-reminder-viewport{min-width:0;overflow:hidden;flex:1}
.global-reminder-track{display:flex;width:max-content;gap:48px;animation:globalReminderMarquee 26s linear infinite}
.global-reminder-banner:hover .global-reminder-track{animation-play-state:paused}
.global-reminder-item{display:flex;align-items:center;gap:16px;white-space:nowrap;font-size:18px}
.global-reminder-time{color:var(--warn);font-variant-numeric:tabular-nums}
.global-reminder-cancel{border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--text);padding:8px 14px;font-size:15px;cursor:pointer}
.global-reminder-cancel:hover{border-color:var(--danger);color:var(--danger)}
@keyframes globalReminderMarquee{from{transform:translateX(0)}to{transform:translateX(-35%)}}
@media (prefers-reduced-motion:reduce){.global-reminder-track{animation:none}}
@media (max-width:760px){.project-flow-compact .tl-step,.project-flow-compact .tl-step.cur,.project-flow-compact .tl-step.active:not(.cur),.project-flow-compact .tl-step:has(.tl-actions),.project-flow-compact .tl-step.approved-active-compact{flex:0 0 100%;min-width:100%;max-width:100%;grid-template-columns:78px minmax(0,1fr) 136px}.global-reminder-banner{padding:10px 12px;gap:10px}.global-reminder-label{font-size:14px;padding:7px 10px}.global-reminder-item{font-size:14px;gap:8px}}
.p6-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 0;
  cursor: pointer;
  transition: all .2s;
  position: relative;
  overflow: hidden;
}
.p6-card:hover {
  border-color: var(--primary);
  box-shadow: 0 2px 12px rgba(99,66,212,.12);
  transform: translateY(-1px);
}
.p6-card-thumb {
  width: 100%;
  height: 80px;
  border-radius: 0;
  position: relative;
}
.p6-card-frozen-tag {
  position: absolute;
  top: 6px;
  right: 6px;
  font-size: 9px;
  background: rgba(59,130,246,.85);
  color: #fff;
  padding: 2px 6px;
  border-radius: 4px;
}
.p6-card-body {
  padding: 10px 12px 12px;
}
.p6-card-name {
  font-weight: 700;
  font-size: 13px;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.p6-card-progress {
  height: 3px;
  background: var(--line);
  border-radius: 2px;
  margin: 6px 0;
  overflow: hidden;
}
.p6-card-progress-bar {
  height: 100%;
  border-radius: 2px;
  transition: width .3s;
}
.p6-card-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
  margin-top: 3px;
}
.p6-card-stat {
  font-weight: 600;
}
.p6-card-meta-item {
  color: var(--muted);
  font-size: 11px;
  max-width: 90px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.p6-card-badges {
  display: flex;
  gap: 4px;
  margin-top: 6px;
  flex-wrap: wrap;
}
.p6-empty-action {
  min-height: 132px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 7px;
  padding: 24px;
  color: var(--muted);
  text-align: center;
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: color-mix(in srgb, var(--card) 82%, transparent);
}
.p6-empty-action > div { color: var(--text); font-weight: 700; }
.p6-empty-action > span { font-size: 11px; }
.p6-filter-bar {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

/* 3. Character List Table (right column) */
.p6-list-section {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px;
}
.p6-list-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.p6-list-search {
  font-size: 12px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  width: 140px;
  margin-left: auto;
  background: var(--bg);
  color: var(--text);
}
.p6-list-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.p6-list-table th {
  text-align: left;
  padding: 6px 8px;
  font-weight: 600;
  color: var(--muted);
  border-bottom: 1px solid var(--line);
  font-size: 11px;
  white-space: nowrap;
}
.p6-list-table td {
  padding: 8px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.p6-list-table tr.p6-list-row {
  cursor: pointer;
  transition: background .15s;
}
.p6-list-table tr.p6-list-row:hover {
  background: rgba(99,66,212,.04);
}

/* 4. Shared Task Summary Row */
.p6-shared-summary {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  cursor: pointer;
  transition: all .2s;
  margin-top: 12px;
}
.p6-shared-summary:hover {
  border-color: var(--primary);
  background: rgba(99,66,212,.03);
}
.p6-shared-summary b {
  font-size: 13px;
}
.p6-shared-summary .meta {
  font-size: 12px;
  color: var(--muted);
}
.p6-shared-summary .arrow {
  margin-left: auto;
  font-size: 16px;
  color: var(--muted);
}

/* 5. Stage Summary Stats Bar */
.p6-stats-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.p6-stat-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 14px;
  text-align: center;
  min-width: 70px;
  transition: box-shadow .2s;
}
.p6-stat-card:hover {
  box-shadow: 0 2px 8px rgba(99,66,212,.08);
}
.p6-stat-card .label {
  font-size: 10px;
  color: var(--muted);
}
.p6-stat-card .value {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.2;
}

/* 6. Large Overlay (replaces drawer) */
.p6-overlay-mask {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: p6-fadeIn .2s;
}
@keyframes p6-fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.p6-overlay {
  width: 90vw;
  max-width: 1200px;
  height: 88vh;
  background: var(--bg);
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: p6-scaleIn .2s;
  box-shadow: 0 8px 40px rgba(0,0,0,.25);
}
@keyframes p6-scaleIn {
  from { transform: scale(.95); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
.p6-overlay-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}
.p6-overlay-head h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
}
.p6-overlay-head .p6-tag {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--primary);
  color: #fff;
}
.p6-overlay-head .p6-overlay-meta {
  font-size: 12px;
  color: var(--muted);
}
.p6-overlay-close {
  margin-left: auto;
  background: none;
  border: none;
  font-size: 20px;
  cursor: pointer;
  color: var(--muted);
  padding: 4px 8px;
  border-radius: 6px;
  transition: all .15s;
}
.p6-overlay-close:hover {
  background: var(--line);
  color: var(--text);
}
.p6-overlay-body {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
}

/* 7. Overlay: Task List View (View A) */
.p6-task-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.p6-task-table th {
  text-align: left;
  padding: 8px 10px;
  font-weight: 600;
  color: var(--muted);
  border-bottom: 2px solid var(--line);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .3px;
}
.p6-task-table td {
  padding: 10px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.p6-task-table tr.p6-task-row {
  cursor: pointer;
  transition: background .15s;
}
.p6-task-table tr.p6-task-row:hover {
  background: rgba(99,66,212,.05);
}

/* 8. Overlay: Task Detail View (View B) */
.p6-detail-back {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--primary);
  cursor: pointer;
  margin-bottom: 16px;
  padding: 4px 0;
  border: none;
  background: none;
  transition: color .15s;
}
.p6-detail-back:hover {
  color: var(--text);
}
.p6-detail-core {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.p6-detail-core-item {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 14px;
  text-align: center;
}
.p6-detail-core-item .label {
  font-size: 10px;
  color: var(--muted);
}
.p6-detail-core-item .value {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
}
.p6-detail-files {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  margin-bottom: 16px;
}
.p6-detail-files b {
  font-size: 12px;
  display: block;
  margin-bottom: 6px;
}
.p6-file-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
}
.p6-file-item:last-child { border-bottom: none; }
.p6-file-thumb {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: 4px;
  background: var(--bg);
}

/* 9. Overlay: Tabs */
.p6-tabs {
  border-top: 1px solid var(--line);
  margin-top: 8px;
}
.p6-tab-bar {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--line);
  overflow-x: auto;
}
.p6-tab {
  padding: 10px 16px;
  font-size: 12px;
  color: var(--muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
  transition: all .15s;
  background: none;
  border-top: none;
  border-left: none;
  border-right: none;
}
.p6-tab:hover {
  color: var(--text);
}
.p6-tab.active {
  color: var(--primary);
  border-bottom-color: var(--primary);
  font-weight: 600;
}
.p6-tab-panel {
  padding: 14px 0;
  font-size: 12px;
}
.p6-tab-panel[hidden] {
  display: none;
}

/* 10. Anomaly Badges (keep) */
.p6-badge {
  display: inline-block;
  font-size: 9px;
  padding: 1px 5px;
  border-radius: 3px;
  font-weight: 600;
  line-height: 1.4;
}
.p6-badge-r2 { background: #f59e0b22; color: #f59e0b; }
.p6-badge-r3 { background: #ef444422; color: #ef4444; }
.p6-badge-delay { background: #8b5cf622; color: #8b5cf6; }
.p6-badge-ot { background: #3b82f622; color: #3b82f6; }
.p6-badge-simple { background: #10b98122; color: #10b981; }
.p6-badge-complex { background: #f59e0b22; color: #f59e0b; }
.p6-badge-high_complex { background: #ef444422; color: #ef4444; }

/* 11. Status Dot */
.p6-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
}

/* 11.5 Stage Images Area (overlay) */
.p6-stage-images {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 14px;
  margin-bottom: 16px;
}
.p6-stage-images-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}
.p6-stage-images-head b {
  font-size: 13px;
}
.p6-stage-images-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  gap: 10px;
}
.p6-stage-img-item {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  aspect-ratio: 1;
  border: 2px solid transparent;
  transition: border-color .15s;
}
.p6-stage-img-item.is-cover {
  border-color: var(--primary);
}
.p6-stage-img-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.p6-stage-img-item:hover .p6-img-set-cover,
.p6-stage-img-item:hover .p6-img-del {
  opacity: 1;
}
.p6-img-cover-tag {
  position: absolute;
  top: 4px;
  left: 4px;
  font-size: 9px;
  background: var(--primary);
  color: #fff;
  padding: 2px 6px;
  border-radius: 4px;
  font-weight: 600;
}
.p6-img-set-cover {
  position: absolute;
  bottom: 4px;
  left: 4px;
  background: rgba(0,0,0,.6);
  color: #fbbf24;
  border: none;
  font-size: 14px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  cursor: pointer;
  opacity: 0;
  transition: opacity .2s;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.p6-img-set-cover:hover {
  background: rgba(0,0,0,.85);
}
.p6-img-del {
  position: absolute;
  top: 4px;
  right: 4px;
  background: rgba(0,0,0,.6);
  color: #fff;
  border: none;
  font-size: 11px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  cursor: pointer;
  opacity: 0;
  transition: opacity .2s;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.p6-img-del:hover {
  background: #ef4444;
}

/* 11.6 Editable Task List (overlay) */
.p6-editable-list {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 14px;
}
.p6-edit-row td {
  padding: 6px 4px;
}
.p6-edit-input {
  font-size: 12px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  transition: border-color .15s;
}
.p6-edit-input:focus {
  border-color: var(--primary);
  outline: none;
  box-shadow: 0 0 0 2px rgba(99,66,212,.12);
}
.p6-edit-select {
  font-size: 12px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  cursor: pointer;
  transition: border-color .15s;
}
.p6-edit-select:focus {
  border-color: var(--primary);
  outline: none;
  box-shadow: 0 0 0 2px rgba(99,66,212,.12);
}
.p6-task-del {
  font-size: 12px;
  padding: 2px 6px;
  border: none;
  background: none;
  color: var(--muted);
  cursor: pointer;
  border-radius: 4px;
  transition: all .15s;
}
.p6-task-del:hover {
  background: #ef444422;
  color: #ef4444;
}

/* 11.7 Overlay Action Buttons */
.p6-overlay-action {
  margin-left: 8px;
  white-space: nowrap;
}

/* 12. Filter Tabs (keep) */
.p6-filter-tab {
  font-size: 11px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  background: none;
  color: var(--muted);
  transition: all .15s;
}
.p6-filter-tab:hover {
  border-color: var(--primary);
  color: var(--text);
}
.p6-filter-tab.active {
  background: transparent;
  color: var(--text);
  border: 2px solid #f59e0b;
  font-weight: 700;
}

/* 13. Gate / Estimate / Scope sections (keep compact) */
.p6-gate-summary {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}

/* 14. Light theme overrides */
[data-theme="light"] .p6-card:hover {
  box-shadow: 0 2px 12px rgba(99,66,212,.08);
}
[data-theme="light"] .p6-overlay {
  box-shadow: 0 8px 40px rgba(0,0,0,.12);
}
[data-theme="light"] .p6-overlay-mask {
  background: rgba(0,0,0,.35);
}
[data-theme="light"] .p6-list-table tr.p6-list-row:hover {
  background: rgba(99,66,212,.03);
}
[data-theme="light"] .p6-task-table tr.p6-task-row:hover {
  background: rgba(99,66,212,.03);
}
[data-theme="light"] .p6-stage-images,
[data-theme="light"] .p6-editable-list {
  box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
[data-theme="light"] .p6-stage-img-item:hover {
  border-color: rgba(99,66,212,.3);
}

/* ============================================================
   Sub-Workflow Sequential Status Flow Buttons
   ============================================================ */
.sw-status-flow {
  display: flex;
  align-items: center;
  gap: 0;
  margin: 16px 0;
  padding: 12px 8px;
  background: var(--panel2);
  border-radius: 10px;
  border: 1px solid var(--line);
  overflow-x: auto;
}
.sw-flow-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  flex: 1;
  min-width: 0;
}
.sw-flow-btn {
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 11px;
  border: 2px solid transparent;
  cursor: pointer;
  transition: all .2s;
  text-align: center;
  white-space: nowrap;
  background: transparent;
  color: var(--text);
}
.sw-flow-btn.sw-flow-completed {
  background: #10b98122;
  color: #10b981;
  border-color: #10b981;
  cursor: default;
  font-weight: 600;
}
.sw-flow-btn.sw-flow-current {
  background: #f59e0b15;
  color: #f59e0b;
  border: 2px solid #f59e0b;
  font-weight: 700;
  font-size: 13px;
  padding: 8px 16px;
  box-shadow: 0 0 8px rgba(245,158,11,.15);
}
.sw-flow-btn.sw-flow-future {
  color: var(--muted);
  opacity: 0.4;
  cursor: not-allowed;
  font-size: 11px;
}
.sw-flow-btn.sw-flow-clickable {
  cursor: pointer;
}
.sw-flow-btn.sw-flow-clickable:hover {
  border-color: #f59e0b;
  font-weight: 700;
}
.sw-flow-arrow {
  color: var(--muted);
  font-size: 14px;
  opacity: 0.35;
  flex: 0 0 auto;
  padding: 0 2px;
}
.sw-flow-arrow.sw-flow-arrow-done {
  color: #10b981;
  opacity: 0.7;
}
.sw-flow-actions {
  display: flex;
  gap: 6px;
  margin-top: 10px;
  flex-wrap: wrap;
  justify-content: center;
}
.sw-flow-actions .btn {
  font-size: 12px;
  padding: 6px 14px;
}

/* ============================================================
   Vertical Sequential Flow (per_unit sub-workflows)
   ============================================================ */
.sw-vflow {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 8px 0;
}
.sw-vflow-node {
  position: relative;
  padding: 10px 14px;
  border: 2px solid var(--line);
  border-radius: 10px;
  margin-bottom: 4px;
  cursor: pointer;
  transition: all .2s;
  background: var(--panel2);
}
.sw-vflow-node:hover {
  border-color: #f59e0b;
}
/* Vertical connector line */
.sw-vflow-node:not(:last-child)::after {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 24px;
  width: 2px;
  height: 6px;
  background: var(--line);
}
/* State: completed */
.sw-vflow-node.vflow-done {
  border-color: #10b98144;
  background: #10b98108;
}
.sw-vflow-node.vflow-done .vflow-status {
  color: #10b981;
  font-weight: 600;
}
.sw-vflow-node.vflow-done::after {
  background: #10b981;
}
/* State: current (active) */
.sw-vflow-node.vflow-current {
  border-color: #f59e0b;
  background: #f59e0b08;
  box-shadow: 0 0 8px rgba(245,158,11,.12);
}
.sw-vflow-node.vflow-current .vflow-name {
  font-size: 15px;
  font-weight: 700;
}
.sw-vflow-node.vflow-current .vflow-status {
  color: #f59e0b;
  font-weight: 700;
}
/* State: future (grayed, disabled) */
.sw-vflow-node.vflow-future {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}
.sw-vflow-node.vflow-future .vflow-name {
  color: var(--muted);
}
.sw-vflow-node.vflow-future .vflow-status {
  color: var(--muted);
}
/* State: editing */
.sw-vflow-node.vflow-editing {
  border-color: #8b5cf644;
  background: #8b5cf608;
}
.sw-vflow-node.vflow-editing .vflow-status {
  color: #8b5cf6;
  font-weight: 600;
}
/* State: awaiting_review */
.sw-vflow-node.vflow-review {
  border-color: #f59e0b44;
  background: #f59e0b08;
}
.sw-vflow-node.vflow-review .vflow-status {
  color: #f59e0b;
  font-weight: 700;
}
/* Node header layout */
.vflow-head {
  display: flex;
  align-items: center;
  gap: 8px;
}
.vflow-check {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid var(--line);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  flex: 0 0 auto;
}
.vflow-done .vflow-check {
  background: #10b981;
  border-color: #10b981;
  color: #fff;
}
.vflow-current .vflow-check {
  border-color: #f59e0b;
  border-width: 3px;
}
.vflow-name {
  font-size: 13px;
  font-weight: 600;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.vflow-status {
  font-size: 11px;
  flex: 0 0 auto;
  white-space: nowrap;
}
.vflow-meta {
  display: flex;
  gap: 10px;
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
  padding-left: 28px;
}

.vflow-badges {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
}
/* Action buttons in node */
.vflow-actions {
  display: flex;
  gap: 4px;
  margin-top: 6px;
  padding-left: 28px;
  flex-wrap: wrap;
}
.vflow-actions .btn {
  font-size: 11px;
  padding: 4px 10px;
}

/* ============================================================
   Inline Task Detail Expansion (inside character overlay)
   ============================================================ */
.sw-vflow-detail {
  margin-top: 8px;
  padding: 12px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  animation: slideDown .15s ease-out;
}
.vflow-lock-hint {
  margin-left: auto;
  color: var(--muted);
  font-size: 10px;
  white-space: nowrap;
}
.vflow-formula {
  margin-bottom: 9px;
  padding: 8px 10px;
  border: 1px solid color-mix(in srgb, var(--brand2) 32%, var(--line));
  border-radius: 7px;
  background: color-mix(in srgb, var(--brand2) 8%, var(--card));
  color: var(--text);
  font-size: 11px;
}
.vflow-add-zone { margin-top: 10px; }
.vflow-add-form {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(140px, .7fr) auto auto;
  gap: 7px;
  align-items: center;
  padding: 10px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--card);
}
.vflow-add-form.hidden { display: none; }
.vflow-add-form input, .vflow-add-form select {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel2);
  color: var(--text);
  padding: 7px 8px;
}



.vflow-inline-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
@media (max-width: 760px) {
  .vflow-add-form { grid-template-columns: 1fr; }
  .vflow-inline-grid { grid-template-columns: 1fr; }
}
@keyframes slideDown {
  from { opacity: 0; max-height: 0; }
  to { opacity: 1; max-height: 2000px; }
}
/* Inline tabs */
.vflow-tabs {
  display: flex;
  gap: 2px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 10px;
  overflow-x: auto;
}
.vflow-tab {
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  border: none;
  background: transparent;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: .15s;
  white-space: nowrap;
}
.vflow-tab:hover {
  color: var(--text);
}
.vflow-tab.active {
  color: #f59e0b;
  border-bottom-color: #f59e0b;
  font-weight: 700;
}
.vflow-tab-panel {
  display: none;
  font-size: 12px;
}
.vflow-tab-panel.active {
  display: block;
}
/* Detail sections */
.vflow-section-row {
  display: flex;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid var(--line);
  align-items: center;
}
.vflow-section-row:last-child {
  border-bottom: none;
}
.vflow-section-label {
  color: var(--muted);
  font-size: 11px;
  width: 80px;
  flex: 0 0 auto;
}
.vflow-section-val {
  font-size: 12px;
  font-weight: 600;
}
/* Action grid for DP features */
.vflow-action-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  gap: 6px;
  margin-top: 8px;
}
.vflow-action-btn {
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel2);
  cursor: pointer;
  text-align: center;
  font-size: 11px;
  transition: all .15s;
  color: var(--text);
}
.vflow-action-btn:hover {
  border-color: #f59e0b;
  font-weight: 700;
}
.vflow-action-btn .icon {
  font-size: 16px;
  display: block;
  margin-bottom: 2px;
}
/* Review highlight */
.vflow-review-highlight {
  background: #f59e0b15;
  border: 2px solid #f59e0b;
  border-radius: 8px;
  padding: 10px 14px;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.vflow-review-highlight .btn-ok {
  margin-left: auto;
}
/* Pending review badge on character card */
.review-pending-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: #f59e0b22;
  color: #f59e0b;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 10px;
  animation: pulse 2s infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

/* ===== 产品管理 · 统一页面层级与 Phase 6 交互规范 ===== */
.product-shell {
  background:
    radial-gradient(circle at 82% 0, rgba(245,158,11,.055), transparent 28%),
    var(--bg);
}
.product-sidebar {
  box-shadow: 8px 0 30px rgba(0,0,0,.035);
}
.product-sidebar .nav-item {
  border: 1px solid transparent;
  border-radius: 9px;
  margin: 2px 8px;
  transition: border-color .15s, background .15s, color .15s;
}
.product-sidebar .nav-item:hover {
  border-color: rgba(245,158,11,.35);
  background: rgba(245,158,11,.055);
  color: var(--text);
  font-weight: 600;
}
.product-sidebar .nav-item.active {
  border: 2px solid #f59e0b;
  background: rgba(245,158,11,.075);
  color: var(--text);
  font-weight: 700;
  box-shadow: 0 0 0 1px rgba(245,158,11,.08);
}
.product-main {
  padding: 26px 32px 40px;
}
.product-page-header {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 18px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--line);
}
.product-page-icon {
  width: 46px;
  height: 46px;
  flex: 0 0 46px;
  display: grid;
  place-items: center;
  border-radius: 13px;
  border: 1px solid rgba(245,158,11,.28);
  background: linear-gradient(145deg, rgba(245,158,11,.15), rgba(245,158,11,.045));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
  font-size: 23px;
}
.product-page-copy {
  min-width: 0;
}
.product-page-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.product-page-title {
  margin: 0;
  color: var(--text);
  font-size: 22px;
  line-height: 1.25;
  letter-spacing: -.01em;
}
.product-page-subtitle {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}
.product-page-badge {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 2px 9px;
  border: 1px solid rgba(245,158,11,.28);
  border-radius: 999px;
  background: rgba(245,158,11,.08);
  color: #d97706;
  font-size: 11px;
  font-weight: 700;
}
.product-metric-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 10px;
  margin: 0 0 18px;
}
.product-metric-card {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-height: 84px;
  padding: 13px 15px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: linear-gradient(145deg, var(--panel), var(--panel2));
}
.product-metric-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--brand2);
}
.product-metric-card.tone-info::before { background:#3b82f6; }
.product-metric-card.tone-warning::before { background:#f59e0b; }
.product-metric-card.tone-danger::before { background:#ef4444; }
.product-metric-card.tone-ok::before { background:#22c55e; }
.product-metric-label {
  color: var(--muted);
  font-size: 11px;
}
.product-metric-value {
  margin-top: 6px;
  color: var(--text);
  font-size: 20px;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.product-metric-note {
  margin-top: auto;
  padding-top: 5px;
  color: var(--muted);
  font-size: 10px;
}
.production-metrics .product-metric-label { font-size:16.5px; }
.sales-metrics .dash-lbl,
.after-sales-metrics .dash-lbl,
.purchase-metrics .dash-lbl { font-size:15.4px; }
.product-main > .toolbar {
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: color-mix(in srgb, var(--panel) 88%, transparent);
}
.product-main .table-wrap {
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--panel);
  box-shadow: 0 8px 28px rgba(0,0,0,.035);
}
.product-main .data-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
}
.product-main .data-table tbody tr {
  transition: background .12s;
}
.product-main .data-table tbody tr:hover td {
  background: rgba(245,158,11,.045);
}
.product-main .dash-card {
  border-radius: 11px;
  box-shadow: 0 5px 18px rgba(0,0,0,.025);
}
.product-main .dash-card:hover {
  border-color: rgba(245,158,11,.35);
}

/* 全屏图片预览：支持多图切换、原图缩放与下载 */
.aw-lightbox {
  padding: 70px 70px 48px;
  box-sizing: border-box;
  background: rgba(5,8,15,.94);
  cursor: default;
}
.aw-lb-toolbar {
  position: absolute;
  inset: 14px 18px auto;
  z-index: 10001;
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  padding: 5px 7px 5px 14px;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 12px;
  background: rgba(20,24,33,.82);
  backdrop-filter: blur(16px);
}
.aw-lb-toolbar .aw-lb-title {
  flex: 1;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
  opacity: 1;
}
.aw-lb-count {
  color: rgba(255,255,255,.62);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.aw-lb-tool {
  position: static;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 30px;
  padding: 0 9px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 8px;
  background: rgba(255,255,255,.06);
  color: #fff;
  font: inherit;
  font-size: 11px;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  opacity: .86;
}
.aw-lb-tool:hover {
  border-color: #f59e0b;
  background: rgba(245,158,11,.12);
  color: #fff;
  font-weight: 700;
  opacity: 1;
}
.aw-lb-toolbar .aw-lb-close {
  position: static;
  right: auto;
  top: auto;
  font-size: 22px;
}
.aw-lb-stage {
  width: 100%;
  height: 100%;
  overflow: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  cursor: zoom-in;
}
.aw-lb-img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  border-radius: 8px;
  object-fit: contain;
  box-shadow: 0 12px 50px rgba(0,0,0,.55);
  transition: transform .18s ease;
}
.aw-lb-img.is-zoomed {
  max-width: none;
  max-height: none;
  cursor: zoom-out;
}
.aw-lb-nav {
  position: absolute;
  top: 50%;
  z-index: 10001;
  width: 42px;
  height: 64px;
  margin-top: -32px;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 12px;
  background: rgba(15,18,25,.72);
  color: #fff;
  font-size: 38px;
  line-height: 1;
  cursor: pointer;
}
.aw-lb-nav:hover {
  border-color: #f59e0b;
  background: rgba(245,158,11,.15);
}
.aw-lb-prev { left: 16px; }
.aw-lb-next { right: 16px; }
.aw-lb-hint {
  position: absolute;
  bottom: 14px;
  left: 50%;
  z-index: 10001;
  transform: translateX(-50%);
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,.45);
  color: rgba(255,255,255,.62);
  font-size: 10px;
  white-space: nowrap;
}
.as-thumb {
  outline: 0 solid transparent;
}
.as-thumb:focus,
.as-thumb:hover {
  outline: 2px solid #f59e0b;
  outline-offset: 1px;
}
.sw-vflow-single {
  margin-top: 12px;
}
.sw-vflow-single .sw-vflow-node {
  cursor: pointer;
}

/* ============================================================
   Screenshot-restored Phase 6 task / role overlay
   ============================================================ */
.p6-shot-overlay {
  width: 96vw;
  max-width: 1280px;
  height: 92vh;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg);
  box-shadow: 0 18px 60px rgba(0,0,0,.38);
}
.p6-shot-overlay .p6-overlay-head {
  min-height: 64px;
  padding: 12px 24px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
}
.p6-shot-overlay .p6-overlay-head h3 {
  margin: 0;
  color: var(--text);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .01em;
}
.p6-shot-overlay .p6-overlay-head .p6-tag {
  min-width: 228px;
  padding: 8px 12px;
  border: 1px solid color-mix(in srgb,var(--brand2) 34%,var(--line));
  border-radius: 8px;
  background: color-mix(in srgb,var(--brand2) 10%,var(--panel2));
  color: var(--text);
  font-size: 15px;
  font-weight: 600;
  text-align: left;
}
.p6-shot-overlay .p6-overlay-meta { color: var(--muted); }
.p6-shot-overlay .p6-overlay-body {
  padding: 18px 24px 24px;
  background: var(--bg);
}
.p6-shot-overlay .sw-vflow { padding: 0; gap: 14px; }
.p6-shot-overlay .p6-shot-task-node,
.p6-shot-overlay .p6-shot-task-node.vflow-current,
.p6-shot-overlay .p6-shot-task-node.vflow-done,
.p6-shot-overlay .p6-shot-task-node.vflow-editing,
.p6-shot-overlay .p6-shot-task-node.vflow-review,
.p6-shot-overlay .p6-shot-task-node.vflow-future {
  min-height: 168px;
  margin: 0;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  box-shadow: inset 3px 0 0 var(--brand2),0 4px 14px rgba(0,0,0,.08);
  opacity: 1;
  cursor: default;
  pointer-events: auto;
  transition: border-color .16s ease,box-shadow .16s ease;
}
.p6-shot-overlay .p6-shot-task-node::after { display: none; }
.p6-shot-overlay .p6-shot-task-node:hover { border-color: color-mix(in srgb,var(--brand2) 52%,var(--line)); }
.p6-shot-overlay .p6-shot-task-node.vflow-current { box-shadow: inset 3px 0 0 var(--brand),0 4px 14px rgba(0,0,0,.08); }
.p6-shot-overlay .p6-shot-task-node.vflow-done { box-shadow: inset 3px 0 0 var(--ok),0 4px 14px rgba(0,0,0,.08); }
.p6-shot-overlay .p6-shot-task-node.vflow-review { box-shadow: inset 3px 0 0 var(--warn),0 4px 14px rgba(0,0,0,.08); }
.p6-shot-overlay .p6-shot-task-node.vflow-editing { box-shadow: inset 3px 0 0 var(--brand2),0 4px 14px rgba(0,0,0,.08); }
.p6-shot-overlay .sw-vflow-detail {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  animation: none;
}
.p6-shot-layout {
  display: grid;
  grid-template-columns: 188px 68px 150px repeat(3,minmax(132px,1fr));
  column-gap: 10px;
  row-gap: 8px;
  align-items: start;
  color: var(--text);
}
.p6-shot-layout.is-employee {
  grid-template-columns: 188px 68px 150px repeat(2,minmax(150px,1fr));
}
.p6-shot-task-info {
  position: relative;
  min-height: 144px;
  padding: 0 8px 0 12px;
  font-size: 14px;
}
.p6-shot-task-name {
  min-height: 30px;
  margin-bottom: 6px;
  color: var(--text);
  font-size: 16px;
  font-weight: 700;
  line-height: 1.35;
}
.p6-shot-owner-row { display: grid; gap: 2px; margin-bottom: 28px; }
.p6-shot-owner-row > span:first-child,
.p6-shot-due-label { color: var(--muted); font-size: 12px; font-weight: 500; }
.p6-shot-owner,
.p6-shot-owner-text {
  width: 100%;
  min-height: 26px;
  color: var(--text);
  font-size: 13px;
  font-weight: 600;
}
.p6-shot-owner { border: 1px solid transparent; border-radius: 6px; background: transparent; }
.p6-shot-owner:hover,.p6-shot-owner:focus { border-color: var(--brand2); outline: none; }
.p6-shot-due { margin-top: 6px; color: var(--text); font-size: 13px; font-weight: 600; }
.p6-shot-difficulty {
  min-height: 110px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5px 6px;
  border: 1px solid color-mix(in srgb,var(--brand) 38%,var(--line));
  border-radius: 8px;
  background: color-mix(in srgb,var(--brand) 12%,var(--panel2));
  color: var(--brand);
  font-size: 0;
  text-align: center;
}
.ui-icon-difficulty{width:56px;height:56px;margin:0}
.p6-shot-difficulty span,
.p6-shot-difficulty b { display: block; overflow:hidden; font-weight: 700; line-height: 1.3; text-overflow:ellipsis; white-space:nowrap; }
.p6-shot-thumb {
  width: 150px;
  height: 110px;
  padding: 0;
  overflow: hidden;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--panel2);
  color: var(--muted);
  font-size: 14px;
  text-align: center;
  cursor: pointer;
  transition: border-color .16s ease,color .16s ease,background .16s ease;
}
.p6-shot-thumb:hover,.p6-shot-thumb:focus { border-color: var(--brand2); color: var(--brand2); background: color-mix(in srgb,var(--brand2) 7%,var(--panel2)); outline: none; }
.p6-shot-thumb span { display: flex; height: 100%; padding: 20px; align-items: center; justify-content: center; }
.p6-shot-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.p6-shot-metric-column { display: grid; gap: 8px; padding-top: 2px; }
.p6-shot-metric-column > div {
  display: grid;
  grid-template-columns: minmax(72px,auto) minmax(68px,1fr);
  gap: 8px;
  align-items: center;
  min-height: 31px;
}
.p6-shot-metric-column label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}
.p6-shot-value {
  display: flex;
  width: 100%;
  min-width: 68px;
  min-height: 28px;
  box-sizing: border-box;
  align-items: center;
  justify-content: center;
  padding: 4px 7px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel2);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}
button.p6-shot-value { cursor: pointer; transition: border-color .15s ease,color .15s ease,background .15s ease; }
button.p6-shot-value:hover,button.p6-shot-value:focus { border-color: var(--brand2); color: var(--brand2); background: color-mix(in srgb,var(--brand2) 7%,var(--panel2)); outline: none; }
.p6-shot-overlay .vflow-actions {
  position: absolute;
  z-index: 3;
  top: 125px;
  left: 184px;
  width: 100px;
  margin: 0;
  padding: 0;
  gap: 4px;
}
.p6-shot-overlay .vflow-actions .btn,
.p6-shot-completed {
  width: 100px;
  min-width: 100px;
  height: 34px;
  min-height: 34px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 10px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  text-align: center;
}
.p6-shot-overlay .vflow-actions:has(.btn:nth-child(2)) {
  display: grid;
  grid-template-columns: repeat(2,48px);
  gap: 4px;
}
.p6-shot-overlay .vflow-actions:has(.btn:nth-child(2)) .btn {
  width: 48px;
  min-width: 48px;
  padding: 0 4px;
  font-size: 11px;
}
.p6-shot-overlay .vflow-actions .btn-ok { background: var(--ok); color: #fff; }
.p6-shot-overlay .vflow-actions .btn-danger { background: var(--danger); color: #fff; }
.p6-shot-overlay .vflow-actions .btn:not(.btn-ok):not(.btn-danger) { background: var(--panel2); color: var(--text); border: 1px solid var(--line); }
.p6-shot-completed { background: color-mix(in srgb,var(--ok) 16%,var(--panel2)); color: var(--ok); border: 1px solid color-mix(in srgb,var(--ok) 38%,var(--line)); }
.p6-task-desc-toggle {
  position: absolute;
  left: 276px;
  bottom: 0;
  width: 150px;
  min-height: 34px;
  border: 1px solid color-mix(in srgb,var(--brand2) 36%,var(--line));
  border-radius: 8px;
  background: color-mix(in srgb,var(--brand2) 11%,var(--panel2));
  color: var(--brand2);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: border-color .15s ease,background .15s ease;
}
.p6-task-desc-toggle:hover,.p6-task-desc-toggle:focus { border-color: var(--brand2); background: color-mix(in srgb,var(--brand2) 17%,var(--panel2)); outline: none; }
.p6-shot-description {
  display: none;
  grid-column: 1 / 4;
  width: 440px;
  min-height: 74px;
  box-sizing: border-box;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: var(--panel2);
}
.p6-shot-description.is-open { display: block; }
.p6-task-description-input,
.p6-task-description-readonly {
  width: 100%;
  min-height: 74px;
  box-sizing: border-box;
  padding: 8px 10px;
  border: 0;
  border-radius: 8px;
  resize: vertical;
  background: var(--panel2);
  color: var(--text);
  font-size: 13px;
  line-height: 1.4;
}
.p6-task-description-input:focus { outline: none; box-shadow: inset 0 0 0 1px var(--brand2); }
.p6-shot-history {
  grid-column: 4 / -1;
  font-size: 12px;
}
.p6-shot-history:empty { display: none; }

/* 独立任务只有一行内容：按内容收起浮窗，遮罩继续负责水平/垂直居中。 */
.p6-task-shot-overlay {
  height: auto;
  min-height: 0;
  max-height: 86vh;
}
.p6-task-shot-overlay .p6-overlay-body {
  flex: 0 1 auto;
  max-height: calc(86vh - 64px);
  overflow-y: auto;
}

[data-theme="light"] .p6-shot-overlay { box-shadow: 0 18px 60px rgba(26,29,35,.18); }

@media (max-width: 1050px) {
  .p6-shot-overlay .p6-overlay-body { overflow-x: auto; }
  .p6-shot-layout { min-width: 1120px; }
  .p6-shot-layout.is-employee { min-width: 820px; }
}

@media (max-width: 1100px) {
  .product-main { padding: 22px 22px 36px; }
  .product-metric-strip { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 720px) {
  .product-main { padding: 18px 14px 30px; }
  .product-page-icon { width:40px;height:40px;flex-basis:40px;font-size:20px; }
  .product-page-title { font-size:19px; }
  .product-metric-strip { grid-template-columns: 1fr; }
  .aw-lightbox { padding: 64px 12px 42px; }
  .aw-lb-nav { width:34px;height:52px;font-size:30px; }
  .aw-lb-prev { left:6px; }
  .aw-lb-next { right:6px; }
  .aw-lb-hint { display:none; }
}

[data-theme="light"] .product-page-badge {
  color: #a75c00;
}
[data-theme="light"] .product-shell {
  background:
    radial-gradient(circle at 82% 0, rgba(245,158,11,.08), transparent 30%),
    var(--bg);
}

/* ====== 研发协同 / 创意工坊 / 运营中心统一视觉 ====== */
.module-page{width:100%;max-width:none;margin:0}
.module-page-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 20px;padding:18px 20px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,var(--panel),color-mix(in srgb,var(--brand) 7%,var(--panel)));box-shadow:0 10px 30px rgba(0,0,0,.06)}
.module-page-heading{display:flex;align-items:center;gap:14px;min-width:0}
.module-page-icon{width:46px;height:46px;flex:0 0 46px;border-radius:13px;display:grid;place-items:center;font-size:23px;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.32)}
.module-page-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.module-page-title-row h1{font-size:23px;line-height:1.2;margin:0}
.module-page-heading p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.6}
.module-page-badge,.module-count-chip{display:inline-flex;align-items:center;min-height:23px;padding:2px 9px;border-radius:999px;border:1px solid rgba(245,158,11,.35);background:rgba(245,158,11,.1);color:#f59e0b;font-size:11px;font-weight:700;white-space:nowrap}
.module-page-rd .stat-row{gap:12px}.module-page-rd .stat{border-radius:13px;border-color:var(--line);background:var(--panel)}
.module-page-rd .pcard{border-radius:14px;overflow:hidden;transition:transform .16s,border-color .16s,box-shadow .16s}
.module-page-rd .pcard:hover{transform:translateY(-3px);border-color:#f59e0b;box-shadow:0 12px 28px rgba(0,0,0,.12)}
.creative-module-page{background:radial-gradient(circle at 15% 0,rgba(124,92,255,.08),transparent 26%),var(--bg)}
.creative-module-page .creative-header{position:sticky;top:0;z-index:4;padding:10px 0;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(12px)}
.creative-module-page .draft-card,.creative-module-page .competitor-card{border-radius:12px;border:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.05);transition:transform .16s,border-color .16s,box-shadow .16s}
.creative-module-page .draft-card:hover,.creative-module-page .competitor-card:hover{transform:translateY(-2px);border-color:#f59e0b;box-shadow:0 10px 24px rgba(0,0,0,.11)}
.creative-preview-image,.comp-detail-img,.comp-gallery-thumb,.ops-mat-thumb-zoom,.p6-stage-img-item img{cursor:zoom-in}
.creative-preview-image:focus-visible,.comp-detail-img:focus-visible,.ops-mat-thumb-zoom:focus-visible{outline:2px solid #f59e0b;outline-offset:2px}
.module-page-operations .ops-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.module-page-operations .ops-card{border-radius:15px;box-shadow:0 8px 24px rgba(0,0,0,.06)}
.module-page-operations .ops-card:hover{border-color:#f59e0b;box-shadow:0 14px 34px rgba(0,0,0,.13)}
.module-page-operations .ops-month-row{border-radius:14px;padding:14px 16px;background:linear-gradient(180deg,var(--panel2),color-mix(in srgb,var(--panel2) 92%,var(--brand) 8%))}
.module-page-operations .ops-ev-body{border-color:rgba(245,158,11,.55);border-radius:12px}

.vflow-version-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line);font-size:11px}.vflow-version-row span{margin-left:auto;color:var(--muted)}
.p6-stage-img-item:hover{outline:2px solid #f59e0b;outline-offset:1px}

@media(max-width:900px){.module-page-header{padding:14px}.module-page-title-row h1{font-size:19px}.creative-three-col{grid-template-columns:1fr!important;overflow:auto}.creative-resize-handle{display:none}.creative-col-drafts,.creative-col-tags,.creative-col-competitors{height:auto;min-height:420px;border-right:0;border-bottom:1px solid var(--line)}}
[data-theme="light"] .module-page-badge,[data-theme="light"] .module-count-chip{color:#a75c00}

/* ====== 全宽业务工作区：研发 / 运营 / 产品信息 / 工作中心 ====== */
.collab-main,.operations-main,.product-info-main,.work-center-main{width:100%;max-width:none}
.collab-main .module-page-rd,.operations-main .module-page-operations{width:100%;max-width:none;margin:0}
.collab-main .pgrid,.operations-main .ops-grid{width:100%}
.collab-main .pgrid-50{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.collab-main .pgrid-70{grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}
.collab-main .pgrid-100{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}
.operations-main{background:radial-gradient(circle at 88% 0,rgba(245,158,11,.07),transparent 28%),var(--bg)}
.work-center-main{background:radial-gradient(circle at 85% 0,rgba(59,130,246,.07),transparent 30%),var(--bg)}
.product-info-main{background:radial-gradient(circle at 85% 0,rgba(16,185,129,.06),transparent 28%),var(--bg)}
.collab-sidebar .nav-item:hover,.operations-sidebar .nav-item:hover,.work-center-sidebar .nav-item:hover,.product-info-sidebar .nav-item:hover{background:rgba(245,158,11,.07);color:var(--text)}
.collab-sidebar .nav-item.active,.operations-sidebar .nav-item.active,.work-center-sidebar .nav-item.active,.product-info-sidebar .nav-item.active{background:rgba(245,158,11,.08);border:1px solid #f59e0b;color:var(--text);font-weight:700}

.work-center-page .toolbar{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 6px 18px rgba(0,0,0,.04)}
.work-center-page .weekly-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.work-center-page .weekly-card{border-radius:14px;padding:16px;box-shadow:0 7px 22px rgba(0,0,0,.05);transition:transform .16s,border-color .16s,box-shadow .16s}
.work-center-page .weekly-card:hover{transform:translateY(-2px);border-color:#f59e0b;box-shadow:0 12px 28px rgba(0,0,0,.1)}
.work-center-page .wc-section{padding:7px 9px;border-radius:7px;background:color-mix(in srgb,var(--panel2) 84%,transparent)}
.work-center-page .wc-thumb{width:68px;height:68px;border-radius:8px;cursor:zoom-in}
.work-center-page .wc-thumb:hover{transform:none;outline:2px solid #f59e0b;outline-offset:1px}
.work-center-page .wr-form{max-width:900px;border-radius:15px;box-shadow:0 10px 30px rgba(0,0,0,.07)}
.work-center-page .wr-thumb{cursor:zoom-in}.work-center-page .wr-thumb:hover{outline:2px solid #f59e0b;outline-offset:1px}

.product-info-page{display:flex;flex-direction:column;gap:14px}
.product-info-page .module-page-header{margin-bottom:0}
.product-info-page .po-page-admin-v2{border:1px solid var(--line);border-radius:15px;overflow:hidden;background:var(--panel2)}
.product-info-page .po-body-v2{grid-template-columns:240px minmax(0,1fr);gap:14px}
.product-info-page .po-batches{border-radius:12px;box-shadow:0 7px 20px rgba(0,0,0,.05)}
.product-info-page .po-main{border-radius:12px;box-shadow:0 9px 26px rgba(0,0,0,.06)}
.product-info-page .po-img-cell .po-img-slot{min-height:180px;border-radius:10px}
.product-info-page .po-img-cell .po-img-slot img{cursor:zoom-in}
.product-info-page .po-img-cell .po-img-slot img:hover{transform:scale(1.015)}
.product-info-page .po-intro-cell,.product-info-page .po-files-block{box-shadow:0 5px 16px rgba(0,0,0,.035)}

/* 产品信息管理：项目/批次摘要及图片区重新排版 */
.product-info-page .po-proj-row{grid-template-columns:minmax(350px,1.4fr) minmax(210px,.72fr) minmax(380px,1.18fr) minmax(220px,.75fr);gap:10px;overflow-x:auto}
.product-info-page .po-proj-english{width:100%;margin:0;padding:0}
.product-info-page .po-proj-english .po-cell{width:100%;gap:2px;align-items:stretch;text-align:left}
.product-info-page .po-proj-english .po-cell>label{font-size:11px;color:var(--muted)}
.product-info-page .po-proj-english .po-cell>span{width:100%;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
.po-production-summary{display:grid;grid-template-columns:repeat(4,minmax(86px,1fr));grid-template-rows:repeat(2,auto);gap:10px 2px;align-content:center;align-items:stretch;min-width:380px;padding:8px 7px;border-left:1px dashed var(--line);border-right:1px dashed var(--line)}
.po-production-summary .po-cell{justify-content:center;align-items:stretch;gap:5px;padding:2px;border-radius:6px;background:var(--panel2);text-align:center}
.po-production-summary .po-cell>label{width:100%;font-size:12px;line-height:1.3;white-space:nowrap;color:var(--muted);text-align:center}
.po-production-summary .po-cell>span{width:100%;font-size:13px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.po-production-summary>.po-cell:nth-child(4){grid-column:4;grid-row:1}
.po-production-summary>.po-cell:nth-child(8){grid-column:4;grid-row:2}
.product-info-sidebar .admin-zone-title{font-size:8.8px}
.product-info-page .po-batch-control{border-right:0}
.product-info-page .po-factory-stack{padding-left:0;border-left:0}
.po-media-spec-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.62fr) minmax(270px,.86fr);grid-template-rows:repeat(2,minmax(0,1fr));grid-template-areas:"images params copyright" "images specs inspection";gap:10px;height:429px;padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.po-media-spec-layout>.po-image-quadrants{grid-area:images;height:100%}
.po-media-spec-layout>.po-product-params-panel{grid-area:params;height:100%}
.po-media-spec-layout>.po-files-block{height:100%;min-height:0;padding:12px 14px;gap:7px;overflow:hidden}
.po-media-spec-layout>.po-files-block>label{display:flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.po-media-spec-layout>.po-files-block .po-files-body{min-height:0;overflow:auto;font-size:11px}
.po-media-spec-layout>.po-files-block .po-file-list{gap:4px}
.po-media-spec-layout>.po-files-block .po-file-list li a{padding:4px 7px;font-size:10px}
.po-copyright-card{grid-area:copyright}.po-inspection-card{grid-area:inspection}
.po-specs-matrix-compact{grid-area:specs;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:2px 6px;min-width:0;min-height:0;padding:8px 10px;overflow:hidden}
.po-specs-matrix-compact .po-cell{justify-content:center;gap:1px;padding:2px 3px}
.po-specs-matrix-compact .po-cell>label{font-size:12px}.po-specs-matrix-compact .po-cell>span{font-size:12px}
.po-intro-row-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0;align-items:stretch}
.po-intro-row-4>.po-ratio-cell{grid-row:auto;min-height:150px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.po-intro-row-4>.po-intro-cell{min-height:150px}
.po-media-info-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px;height:260px;padding:16px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.po-image-quadrants{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:8px;min-width:0;min-height:0}
.product-info-page .po-image-quadrants .po-img-cell{gap:4px;min-height:0;padding:5px 7px;border-radius:7px;background:var(--panel)}
.product-info-page .po-image-quadrants .po-img-cell>label{min-height:21px;flex-wrap:nowrap;font-size:11px;line-height:1.2;overflow:hidden;white-space:nowrap}
.product-info-page .po-image-quadrants .po-img-btn{padding:1px 5px;font-size:9px}
.product-info-page .po-image-quadrants .po-img-slot{min-height:0;max-height:none;height:100%;border-radius:6px}
.product-info-page .po-image-quadrants .po-img-empty{padding:4px;font-size:10px}
.po-product-params-panel{display:flex;flex-direction:column;min-width:0;height:100%;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.po-product-params-panel .po-cell{flex:1;justify-content:center;padding:8px 3px;border-bottom:1px dashed var(--line)}
.po-product-params-panel .po-cell:last-child{border-bottom:0}
.po-product-params-panel .po-cell>label{font-size:13px}.po-product-params-panel .po-cell>span{font-size:13px}
.po-compliance-panel{display:grid;grid-template-rows:repeat(2,minmax(0,1fr));gap:8px;min-width:0;min-height:0}
.product-info-page .po-compliance-panel .po-files-block{min-height:0;padding:9px 11px;gap:5px;overflow:hidden}
.product-info-page .po-compliance-panel .po-files-block>label{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}
.product-info-page .po-compliance-panel .po-files-body{min-height:0;overflow:auto;font-size:11px}
.product-info-page .po-compliance-panel .po-file-list{gap:3px}
.product-info-page .po-compliance-panel .po-file-list li a{padding:3px 6px;font-size:10px}

@media(max-width:1200px){.product-info-page .po-proj-row{grid-template-columns:1fr 1fr}.po-production-summary,.product-info-page .po-factory-stack{grid-column:1/-1}.po-production-summary{border-left:0;border-right:0;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line)}}
@media(max-width:1050px){.po-media-info-row{grid-template-columns:1fr;height:auto}.po-media-spec-layout{grid-template-columns:1fr 1fr;grid-template-rows:300px 210px 210px;grid-template-areas:"images images" "params copyright" "specs inspection";height:auto}.po-product-params-panel{display:grid;grid-template-columns:repeat(3,1fr)}.po-product-params-panel .po-cell{border-bottom:0;border-right:1px dashed var(--line)}.po-product-params-panel .po-cell:last-child{border-right:0}.po-intro-row-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.po-project-strip{grid-auto-columns:150px}.product-info-page .po-proj-row{grid-template-columns:1fr}.po-production-summary{grid-template-columns:repeat(4,88px);grid-template-rows:repeat(2,auto)}.po-media-spec-layout{grid-template-columns:1fr;grid-template-rows:auto;grid-template-areas:"images" "params" "copyright" "specs" "inspection"}.po-media-spec-layout>.po-image-quadrants{height:320px}.po-media-spec-layout>.po-files-block{min-height:150px}.po-image-quadrants{grid-template-columns:1fr;height:auto}.product-info-page .po-image-quadrants .po-img-slot{min-height:130px}.po-product-params-panel{grid-template-columns:1fr}.po-product-params-panel .po-cell{border-right:0;border-bottom:1px dashed var(--line)}.po-specs-matrix-compact{grid-template-columns:1fr}.po-intro-row-4{grid-template-columns:1fr}}

@media(min-width:1600px){.operations-main .ops-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.work-center-page .weekly-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}}
@media(max-width:1200px){.collab-main .pgrid-70{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.collab-main .pgrid-70{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.collab-main .pgrid-70{grid-template-columns:1fr}}
@media(max-width:900px){.product-info-page .po-body-v2{grid-template-columns:1fr}.work-center-page .weekly-grid{grid-template-columns:1fr}}

/* ====== 审核中心合并板块 / 通知 / 我的待办 ====== */

.review-hub{display:flex;flex-direction:column;gap:16px}
.review-board{position:relative;padding:16px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(180deg,var(--panel),color-mix(in srgb,var(--panel2) 86%,var(--panel)));box-shadow:0 8px 24px rgba(0,0,0,.055);overflow:hidden}
.review-board:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#64748b}
.review-board-stage:before{background:#38bdf8}.review-board-process:before{background:#8b5cf6}.review-board-approval:before{background:#f59e0b}
.review-board-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px}
.review-board-head h2{margin:0;font-size:17px}.review-board-head p{margin:4px 0 0;color:var(--muted);font-size:12px}
.review-count{display:grid;place-items:center;min-width:31px;height:31px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--brand2) 14%,var(--panel2));color:var(--brand2);font-weight:800}
.review-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}.review-table-wrap table{margin:0;border:0}
.review-board-process>h2{margin:0 0 4px!important}.review-board-process>.page-sub{margin-bottom:12px}.review-board-process>table{margin-bottom:0}
.approval-summary{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 13px}.approval-summary span{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);font-size:12px;color:var(--muted)}.approval-summary b{color:var(--text);margin-left:4px}
.approval-subhead{margin:2px 0 9px;font-size:13px;font-weight:800}.approval-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.approval-card{display:flex;flex-direction:column;min-height:154px;padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);box-shadow:0 4px 13px rgba(0,0,0,.04)}
.approval-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.approval-type{font-weight:800}.approval-body{flex:1;padding:11px 0}.approval-desc{font-size:13px;line-height:1.55}.approval-meta{margin-top:5px;color:var(--muted);font-size:11px}.approval-comment{margin-top:7px;padding:6px 8px;border-radius:6px;background:rgba(239,68,68,.09);color:var(--danger);font-size:11px}.approval-actions{display:flex;gap:8px;justify-content:flex-end}.approval-history{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}.approval-history summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:700;margin-bottom:10px}

.my-task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:14px;align-items:start}
.my-task-card{min-width:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel);box-shadow:0 7px 22px rgba(0,0,0,.055);cursor:pointer;transition:transform .16s,border-color .16s,box-shadow .16s}
.my-task-card:hover,.my-task-card:focus-visible{transform:translateY(-2px);border-color:#f59e0b;box-shadow:0 12px 28px rgba(0,0,0,.11);outline:none}
.my-task-card-head{height:48px;padding:0 14px;display:flex;align-items:center;justify-content:space-between;gap:8px;background:#14a38f;color:white}.my-task-card-head strong{font-size:18px}.my-task-card-head span{font-size:12px;font-weight:700}.my-task-card.task-state-in_progress .my-task-card-head,.my-task-card.task-state-rejected .my-task-card-head{background:#ff5936}.my-task-card.task-state-awaiting_review .my-task-card-head{background:#8b5cf6}.my-task-card.task-state-approved .my-task-card-head{background:#10b981}
.my-task-card-body{padding:14px}.my-task-title{display:flex;align-items:center;gap:8px;font-size:17px;min-width:0}.my-task-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.my-task-bullet{width:7px;height:7px;border-radius:50%;background:var(--muted)}.my-task-series{margin:6px 0 0 15px;color:var(--muted);font-size:12px}.my-task-divider{height:1px;background:var(--line);margin:13px 0}.my-task-meta{display:flex;justify-content:space-between;gap:10px;margin-top:7px;font-size:12px}.my-task-meta span{color:var(--muted)}.my-task-reject{margin-top:10px;padding:7px 9px;border-radius:7px;background:rgba(239,68,68,.09);color:var(--danger);font-size:12px;line-height:1.45}.my-task-card-actions{display:flex;justify-content:flex-end;padding:0 14px 14px}

.notification-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.notification-card{position:relative;display:flex;flex-direction:column;min-height:150px;padding:14px;border:1px solid var(--line);border-radius:13px;background:var(--panel);box-shadow:0 6px 20px rgba(0,0,0,.05);overflow:hidden}.notification-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#64748b}.notification-card.is-unread:before{background:#f59e0b}.notification-card.is-unread{border-color:color-mix(in srgb,#f59e0b 42%,var(--line));background:linear-gradient(145deg,rgba(245,158,11,.07),var(--panel) 45%)}
.notification-card-state{align-self:flex-end;padding:2px 7px;border-radius:999px;background:var(--panel2);color:var(--muted);font-size:10px;font-weight:700}.is-unread .notification-card-state{background:rgba(245,158,11,.13);color:#f59e0b}.notification-card-main{flex:1}.notification-card .notif-title{font-size:15px;font-weight:800;margin:3px 0 8px}.notification-card .notif-body{font-size:12px;line-height:1.65;color:var(--muted)}.notification-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:10px;margin-top:10px;border-top:1px solid var(--line)}.notification-card-foot time{font-size:10px;color:var(--muted)}

@media(max-width:720px){.review-board{padding:12px}.approval-card-grid,.my-task-grid,.notification-card-grid{grid-template-columns:1fr}}
.department-member-picker{display:flex;flex-direction:column;gap:8px;max-height:360px;overflow:auto;padding:4px}
.department-member-row{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:center;gap:10px;min-height:42px;padding:7px 8px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.department-member-name{font-weight:700;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.department-member-list{display:flex;gap:7px;overflow-x:auto;padding:2px 1px 5px;scrollbar-width:thin}
.department-member-chip{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-width:92px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--input-bg,var(--panel2));cursor:pointer}
.department-member-chip:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--text)}
.department-member-chip input{width:15px;height:15px;margin:0}
.department-member-list .picker-item{display:inline-flex;width:auto;grid-template-columns:none;color:var(--text);font:inherit;text-align:left}
.department-member-list .picker-item small{color:var(--muted);font-size:11px}
.department-member-list .picker-item.active{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 14%,transparent)}
.unified-task-card{position:relative}
.unified-task-card.is-batch-selectable{cursor:default}
#p6-card-section.is-batch-selection-mode .unified-task-card.is-batch-selectable{cursor:pointer}
.unified-task-card.is-batch-selected{border-color:#fbbf24!important;box-shadow:0 0 0 2px rgba(251,191,36,.7),0 8px 24px rgba(245,158,11,.18)!important;background:color-mix(in srgb,var(--card) 92%,#fbbf24 8%)}
#p6-batch-select-btn.is-active{border-color:#fbbf24;color:#fbbf24;background:rgba(245,158,11,.1)}
#p6-batch-owner-btn.is-selection-active{border-color:#fbbf24;color:#fbbf24;background:rgba(245,158,11,.1)}
@media(max-width:900px){.department-member-row{grid-template-columns:86px minmax(0,1fr)}}
.project-group-picker{display:flex;flex-wrap:wrap;gap:8px;min-height:36px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg,var(--panel))}
.project-group-chip{min-height:32px}
.project-group-chip[hidden]{display:none!important}
.notice-warn{margin:10px 0;padding:10px 12px;border:1px solid rgba(245,158,11,.5);border-radius:8px;background:rgba(245,158,11,.1);color:var(--text)}
/* 便捷加班：手机优先操作区，沿用现有主题变量。 */
.platform-wrap>.badge-cards{grid-template-columns:repeat(3,minmax(0,1fr));width:min(100%,648px);gap:10px;margin-bottom:16px}
.platform-wrap .badge-card{min-width:0;gap:10px;padding:12px;border-radius:12px}
.platform-wrap .badge-icon-wrap{width:34px;height:34px;flex:none}
.platform-wrap .ui-icon-badge{width:30px;height:30px}
.platform-wrap .badge-body{min-width:0;overflow-wrap:anywhere}
.platform-wrap .badge-title{font-size:13px;line-height:1.4}
.platform-wrap .badge-sub{font-size:13px;line-height:1.4;font-weight:600;margin-top:3px}
.platform-time-actions{display:flex;align-items:center;justify-content:center;gap:14px;width:min(100%,454px);margin:0 0 24px}
.platform-time-actions>.platform-time-button{display:flex;align-items:center;justify-content:center;gap:10px;flex:0 1 220px;width:220px;height:68px;min-width:0;min-height:68px;padding:10px 14px;font-size:24px;line-height:1.25;font-weight:700;white-space:nowrap;border:0}
.platform-time-actions>[data-attendance-home]{background:var(--attendance-button-bg,#7c5cff);color:var(--attendance-button-text,#fff)}
.platform-time-actions>[data-overtime-open]{background:var(--overtime-button-bg,#ff5c8a);color:var(--overtime-button-text,#fff)}
.platform-time-button .ui-icon-overtime{width:32px;height:32px;flex:0 0 32px;object-fit:contain;font-size:28px}
.ui-home-button-settings{margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}
.ui-home-button-settings>.btn{margin-top:12px}
@media(max-width:520px){
  .platform-time-actions{gap:10px}
  .platform-time-actions>.platform-time-button{height:68px;min-height:68px;padding:10px 8px;font-size:20px;gap:6px}
  .platform-time-button .ui-icon-overtime{width:26px;height:26px;flex-basis:26px;font-size:24px}
}
.overtime-ui-disabled :is(.platform-overtime-actions,.overtime-nav,.sw-overtime-btn,[data-overtime-open],[data-overtime-stats],#overtime-banner){display:none!important}
.platform-overtime-actions>.btn{min-height:44px}
.platform-overtime-actions>[data-overtime-open]{display:flex;align-items:center;justify-content:center;width:min(100%,160px);min-height:68px;padding:16px 24px;font-size:26px;line-height:1.25;font-weight:700;text-align:center}
.overtime-nav{background:transparent;text-align:left;width:100%;color:var(--text);border:0}
#overtime-banner{position:sticky;top:0;z-index:96;display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--line);color:var(--text);min-height:54px}
#overtime-banner strong{font-variant-numeric:tabular-nums;color:var(--info)}
.overtime-banner-task{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.overtime-status-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--warn)}
.overtime-status-dot.running{background:var(--ok)}
.overtime-offline{color:var(--danger);font-size:12px}
body:has(#overtime-banner) .global-reminder-banner{top:calc(var(--overtime-banner-height,64px) + 12px)}
.modal.overtime-modal{width:min(780px,calc(100vw - 32px));max-height:90dvh;padding:24px;color:var(--text);font-size:14px}
.modal.overtime-stats-modal{width:min(1140px,calc(100vw - 32px))}
.overtime-modal-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
.overtime-modal-heading h2{margin:0;font-size:23px}
.overtime-modal-heading>.btn{flex:none;min-height:42px}
.overtime-modal .field input,.overtime-modal .field select,.overtime-modal .field textarea{font-size:16px;min-height:44px}
.overtime-modal .field label{font-size:14px}
.overtime-modal .btn{min-height:44px;white-space:normal}
.overtime-modal .btn:disabled{opacity:.5;cursor:wait}
.overtime-muted{font-size:13px;color:var(--muted);line-height:1.65;overflow-wrap:anywhere}
.overtime-notice{padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--warn);border-radius:8px;background:var(--panel2);line-height:1.7;margin:12px 0}
.overtime-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}
.overtime-record-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.overtime-record-title h3{font-size:21px;line-height:1.4;margin:0;overflow-wrap:anywhere}
.overtime-state{padding:5px 9px;border-radius:6px;background:var(--panel2);color:var(--muted);font-size:13px;white-space:nowrap}
.overtime-state.running{color:var(--ok)}
.overtime-state.paused,.overtime-state.ended{color:var(--warn)}
.overtime-state.submitted{color:var(--info)}
.overtime-linked{font-size:13px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}
.overtime-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}
.overtime-record-modal .overtime-metrics:has(>.overtime-metric:only-child){grid-template-columns:1fr}
.overtime-metric{display:flex;flex-direction:column;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:14px;min-width:0}
.overtime-metric>span{font-size:13px;color:var(--muted)}
.overtime-metric>strong{font-size:18px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.overtime-dates{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted)}
.overtime-section{border-top:1px solid var(--line);padding-top:16px;margin-top:20px}
.overtime-section>summary{font-weight:700;padding:8px 0;cursor:pointer}
.overtime-section h3{font-size:17px;margin:0 0 12px}
.overtime-two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.overtime-outcome{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}
.overtime-file-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}
.overtime-file{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:8px;padding:10px;min-width:0;background:var(--panel2)}
.overtime-file>img{width:100%;height:130px;object-fit:contain;border-radius:5px}
.overtime-file>span{overflow-wrap:anywhere;font-size:13px}
.overtime-file-symbol{display:grid;place-items:center;height:70px;color:var(--muted)}
.overtime-timeline{display:flex;gap:10px;overflow:auto;padding:10px 0}
.overtime-timeline>div{min-width:205px;max-width:260px;flex:none;border:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:8px;border-radius:8px}
.overtime-timeline span,.overtime-timeline small{font-size:12px;color:var(--muted);line-height:1.6}
.overtime-event{font-size:12px;color:var(--muted);line-height:1.7;overflow-wrap:anywhere}
.overtime-event time{font-variant-numeric:tabular-nums;margin-right:8px}
.overtime-stats-filters{display:flex;gap:16px;align-items:center;justify-content:space-between}
.overtime-members{display:flex;gap:8px;overflow:auto;padding:4px 0}
.overtime-members>.btn{flex:none}
.overtime-members>.active{border-color:var(--warn);color:var(--warn);font-weight:700}
.overtime-stats-modal .overtime-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
.overtime-history{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}
.overtime-history-card{text-align:left;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);display:flex;align-items:flex-start;flex-direction:column;gap:10px;min-width:0}
.overtime-history-card:hover{border-color:var(--brand)}
.overtime-history-card h3{font-size:17px;margin:0;overflow-wrap:anywhere}
.overtime-history-card p,.overtime-history-card small{font-size:12px;color:var(--muted);margin:0;line-height:1.6}
#overtime-upload-status{font-size:13px;color:var(--info);line-height:1.6;overflow-wrap:anywhere}
#overtime-receipt-preview img{width:100%;height:auto;border:1px solid var(--line);margin-top:12px}
@media(max-width:768px){
  .platform-header{margin-bottom:18px}
  .platform-brand{gap:12px}
  .platform-brand .platform-logo{width:60px;height:60px;padding:6px;border-radius:16px}
  .platform-header h1{font-size:24px;margin-bottom:4px}
  .platform-header p{font-size:13px;line-height:1.5}
  .platform-wrap>.badge-cards{gap:8px;margin-bottom:14px}
  .platform-wrap .badge-card{flex-direction:column;gap:6px;padding:10px 6px;text-align:center}
  .platform-wrap .badge-title{font-size:12px}
  .platform-wrap .badge-sub{font-size:11px;font-weight:500}
  .platform-overtime-actions>[data-overtime-open]{min-height:72px;font-size:24px}
}
@media(max-width:600px){
  .modal-mask:has(.overtime-modal){padding:10px}
  .modal.overtime-modal{width:100%;max-height:94dvh;padding:16px;border-radius:12px}
  .overtime-modal-heading{margin-bottom:16px}
  .overtime-modal-heading h2{font-size:21px}
  .overtime-record-title h3{font-size:19px}
  .overtime-metric{padding:10px}
  .overtime-metric>strong{font-size:15px}
  .overtime-stats-modal .overtime-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .overtime-history{grid-template-columns:1fr}
  .overtime-file-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .overtime-actions>.btn{flex:1;min-width:95px}
  #overtime-banner{gap:8px;flex-wrap:wrap;padding:8px 10px;font-size:13px}
  .overtime-banner-task{max-width:120px}
  #overtime-banner>.btn{min-height:40px}
}
/* 考勤工作区：沿用主题变量，移动端单列与大触控区。 */
.attendance-page,.attendance-modal{--card:var(--panel);--border:var(--line)}
.attendance-page{max-width:100%;min-width:0}
.attendance-page-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.attendance-tabs,.attendance-action-grid,.attendance-report-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 0}
.attendance-tabs{border-bottom:1px solid var(--border);padding-bottom:14px}
.attendance-quota-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.attendance-quota-head h2{margin:0!important}
.attendance-quota-values{display:flex;gap:24px;flex-wrap:wrap;margin-top:14px;font-size:16px}
.attendance-quota-values b{margin-left:8px}
.attendance-map-toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.attendance-map-toolbar .field{flex:1;min-width:200px;margin:0}
.attendance-map-toolbar .btn{min-height:42px}
.attendance-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:12px;margin:14px 0}
.attendance-map-canvas{height:340px;min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:var(--bg);isolation:isolate}
.attendance-map-results{max-height:340px;overflow:auto;min-width:0;display:flex;flex-direction:column;gap:8px}
.attendance-map-results .attendance-map-result{white-space:normal;text-align:left;padding:12px;display:block;flex:none}
.attendance-map-result b,.attendance-map-result small{display:block;overflow-wrap:anywhere}
.attendance-map-result small{color:var(--muted);margin-top:6px;font-size:12px;line-height:1.5}
.attendance-map-coordinates{border:1px solid var(--border);border-radius:8px;padding:12px;margin:12px 0}
.attendance-map-coordinates summary{cursor:pointer;padding:4px 0}
.attendance-map-coordinates input[readonly]{color:var(--muted);cursor:default}
.attendance-map-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.attendance-map-tools .btn{min-height:40px;flex-shrink:0}
.attendance-map-tools .attendance-muted{flex:1;min-width:160px}
.attendance-map-confirm{align-items:flex-start;margin:14px 0;line-height:1.6}
.attendance-map-confirm input{flex-shrink:0;margin-top:5px}
.attendance-map-canvas img{max-width:none;max-height:none}
.overtime-stats-page{--card:var(--panel);--border:var(--line);max-width:1500px;margin:0 auto;padding:4px 0 24px;min-width:0}
.overtime-stats-page .overtime-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0}
.overtime-stats-page .overtime-metrics:has(>.overtime-metric:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
.overtime-stats-page .overtime-stats-filters{flex-wrap:wrap}
.overtime-stats-page .overtime-members{margin:16px 0}
.overtime-nav[aria-current="page"]{border-color:var(--brand);color:var(--text);background:var(--panel);font-weight:700}
@media(max-width:700px){
  .attendance-map-layout{grid-template-columns:1fr}
  .attendance-map-canvas{height:300px}
  .attendance-map-results{max-height:160px}
  .attendance-map-toolbar .field{flex-basis:100%;min-width:0}
  .attendance-map-toolbar .btn{flex:1}
  .overtime-stats-page .overtime-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.attendance-tabs .btn{min-height:42px}
.attendance-panel,.attendance-punch-card,.attendance-request-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;min-width:0;margin-bottom:16px}
.attendance-panel h2,.attendance-punch-card h2{margin:0 0 12px;font-size:22px}
.attendance-panel h3{margin:0 0 10px}
.attendance-panel p,.attendance-request-card p{line-height:1.6;overflow-wrap:anywhere}
.attendance-punch-card{max-width:860px;margin:18px auto;padding:28px}
.attendance-punch-card h2{font-size:30px;margin-top:8px}
.attendance-muted,.attendance-eyebrow{color:var(--muted);line-height:1.65;font-size:14px}
.attendance-eyebrow{font-weight:600}
.attendance-two,.attendance-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.attendance-two{margin:24px 0}
.attendance-two span,.attendance-two strong{display:block;margin:6px 0}
.attendance-two span{color:var(--muted)}
.attendance-two strong{font-size:18px}
.attendance-punch-actions{display:flex;gap:14px;margin:18px 0}
.attendance-punch-actions .btn{flex:1;min-height:68px;font-size:22px;font-weight:700;border-radius:12px}
.attendance-punch-actions .btn:disabled{opacity:.45;cursor:not-allowed}
.attendance-punch-with-overtime{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.attendance-punch-with-overtime .btn{min-width:0;padding:12px 6px;white-space:normal}
.attendance-punch-with-overtime [data-overtime-open]{display:flex;justify-content:center;align-items:center;gap:4px;flex-wrap:wrap}
.attendance-location-feedback{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-top:12px;border-top:1px solid var(--border);padding-top:14px}
.attendance-location-feedback p{margin:0;flex:1;overflow-wrap:anywhere}
.attendance-location-feedback .btn{flex:none;min-height:38px}
.attendance-review-route{display:inline-flex;align-items:center;width:fit-content;margin:2px 0 8px;padding:5px 10px;border:1px solid color-mix(in srgb,var(--brand) 45%,var(--border));border-radius:999px;background:color-mix(in srgb,var(--brand) 12%,transparent);color:var(--text);font-size:13px;font-weight:700}
.attendance-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}
.attendance-cards,.attendance-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:16px;align-items:start}
.attendance-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.attendance-settings-grid>.attendance-panel{margin-bottom:0}
.attendance-settings-wide{grid-column:1/-1}
.attendance-settings-grid select{max-width:100%;width:100%;min-height:42px}
.attendance-application-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:20px 0}
.attendance-application-grid .attendance-application-button{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:9px;min-height:104px;padding:18px;border-radius:12px;white-space:normal;text-align:left;border:1px solid var(--brand);background:var(--card)}
.attendance-application-button strong{font-size:20px;line-height:1.4;color:var(--text)}
.attendance-application-button span{font-size:14px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}
.attendance-application-grid .btn[data-unavailable="true"]{border-color:var(--border);opacity:.8;cursor:help}
.attendance-application-grid .btn:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.attendance-list>.attendance-resource-item{align-items:flex-start;flex-wrap:wrap}
.attendance-resource-info{flex:1;min-width:160px;overflow-wrap:anywhere}
.attendance-resource-info span{display:block;margin-top:6px}
.attendance-resource-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.attendance-removed-resources{margin-top:16px;color:var(--muted)}
.attendance-removed-resources summary{cursor:pointer;padding:8px 0}
.attendance-notice[hidden]{display:none}
.attendance-request-card{margin:0;height:100%;display:flex;flex-direction:column}
.attendance-request-card header{display:flex;justify-content:space-between;align-items:center;gap:12px}
.attendance-request-card header h3{font-size:17px;margin:0}
.attendance-request-card footer{display:flex;gap:10px;margin-top:auto;padding-top:16px}
.attendance-status{border-radius:7px;padding:5px 9px;background:var(--bg);white-space:nowrap}
.attendance-status.pending{color:#d19b17}.attendance-status.approved{color:#15996c}.attendance-status.rejected{color:#df5261}
.attendance-notice,.attendance-review-note{border-left:3px solid #d19b17;background:var(--card);padding:12px 16px;line-height:1.7;border-radius:6px;margin:14px 0}
.attendance-check{display:inline-flex;align-items:center;gap:8px;min-height:38px;font-size:14px}
.attendance-check input{width:18px!important;height:18px!important;margin:0!important;flex:none}
.attendance-list{max-height:330px;overflow:auto;margin-top:12px}
.attendance-list>div{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border)}
.attendance-list span{font-size:13px;color:var(--muted)}
.attendance-table-wrap{max-width:100%;overflow:auto;border:1px solid var(--border);border-radius:10px;margin:14px 0}
.attendance-table-wrap table{width:100%;margin:0;white-space:nowrap}
.attendance-table-wrap th,.attendance-table-wrap td{padding:12px;text-align:left}
.attendance-table-wrap th{background:var(--card)}
.attendance-table small{display:block;color:var(--muted);margin-top:4px}
.attendance-report-tools .field{margin:0;max-width:220px}
.attendance-report-tools{align-items:flex-end}
.attendance-modal{width:min(1040px,calc(100vw - 40px))!important;max-width:calc(100vw - 40px)!important;max-height:90vh;overflow:auto}
.attendance-modal-heading h2{margin-top:0}
.attendance-modal fieldset{border:1px solid var(--border);border-radius:10px;padding:14px;margin:16px 0;min-width:0}
.attendance-modal legend{color:var(--muted);padding:0 8px}
.attendance-modal .department-member-picker{max-width:100%;overflow:auto}
.attendance-modal .actions{position:sticky;bottom:-1px;background:var(--card);padding:14px 0;margin:10px 0 0;z-index:2}
.attendance-form .field input,.attendance-form .field select,.attendance-form .field textarea{width:100%;box-sizing:border-box;min-height:42px}
.attendance-form textarea{resize:vertical}
.attendance-people-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:12px;max-height:400px;overflow:auto}
.attendance-people-list .btn{white-space:normal}.attendance-people-list small{display:block;margin-top:5px;color:var(--muted)}
.attendance-home-entry{display:flex;justify-content:center;margin:14px 0 22px}
.attendance-home-entry .btn{min-width:220px;min-height:54px;font-size:21px}
.attendance-mobile-back{display:none}
.attendance-audit-json{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}
.mobile-portal{box-sizing:border-box;min-height:100dvh;max-width:520px;margin:auto;padding:32px 24px;display:flex;flex-direction:column;justify-content:center;gap:28px}
.mobile-portal-brand{text-align:center}.mobile-portal-brand img{width:68px;height:68px;object-fit:contain}.mobile-portal-brand h1{font-size:26px;margin:12px 0}.mobile-portal-brand p{color:var(--muted)}
.mobile-portal-actions{display:grid;gap:18px}.mobile-portal-actions .btn{width:100%;min-height:86px;font-size:26px;display:flex;align-items:center;justify-content:center;gap:14px;white-space:normal}.mobile-portal-actions .btn small{font-size:14px}.mobile-portal-actions .ui-icon-overtime{width:48px;height:48px;object-fit:contain}
.mobile-portal-footer{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.mobile-platform-enter{background:var(--panel);border-color:var(--line)}
.mobile-portal-actions>[data-mobile-attendance-link]{background:var(--attendance-button-bg,#7c5cff);color:var(--attendance-button-text,#fff);text-decoration:none}
.mobile-portal-actions>[data-mobile-overtime-link]{background:var(--overtime-button-bg,#c34db3);color:var(--overtime-button-text,#fff);text-decoration:none}
.mobile-portal-actions>.is-disabled{pointer-events:none;opacity:.5}
.mobile-portal-actions .ui-icon-overtime{flex:0 0 48px}.attendance-modal [hidden]{display:none!important}
.startup-screen{box-sizing:border-box;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:28px;background:var(--bg,#0f1117);color:var(--text,#f5f7fb);text-align:center}
.startup-screen img{width:76px;height:76px;object-fit:contain}.startup-screen strong{font-size:24px}.startup-screen span,.startup-screen small{color:var(--muted,#9ca3af);line-height:1.6}.startup-screen button{min-width:180px;min-height:48px;border:1px solid var(--brand,#ff5c8a);border-radius:10px;background:var(--brand,#ff5c8a);color:#fff;font-size:16px;font-weight:700}
@media(max-width:1100px){
  .attendance-application-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:640px){
  .work-center-shell:has(.attendance-page)>.sidebar{display:none}
  .work-center-main:has(.attendance-page){padding:16px 12px;width:100%;min-width:0;max-height:100dvh}
  .attendance-mobile-back{display:inline-flex;margin-top:10px}
  .attendance-page-head{align-items:flex-start}.attendance-page-head .page-title{font-size:26px}
  .attendance-punch-card{padding:18px}.attendance-punch-actions .btn{min-height:76px;font-size:20px;padding:12px 8px;white-space:nowrap}
  .attendance-location-feedback{flex-direction:column}.attendance-location-feedback .btn{width:100%;min-height:46px}
  .attendance-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .attendance-form-grid,.attendance-two{grid-template-columns:1fr;gap:8px}
  .attendance-settings-grid{grid-template-columns:1fr}
  .attendance-application-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .attendance-application-grid .attendance-application-button{min-height:116px;padding:14px 12px}
  .attendance-application-button strong{font-size:18px}
  .attendance-modal{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important;padding:18px!important}
  .attendance-report-tools{align-items:stretch}.attendance-report-tools .field{max-width:none;width:100%}
  .attendance-home-entry .btn{width:min(100%,340px);min-height:70px;font-size:24px}
  .attendance-tabs{gap:6px}.attendance-tabs .btn{flex:1;padding:10px 8px;white-space:nowrap}
  .attendance-punch-with-overtime{gap:8px}
  .attendance-punch-with-overtime .btn{font-size:clamp(13px,3.6vw,18px);padding:10px 2px;white-space:normal}
  .attendance-punch-with-overtime [data-overtime-open]{flex-direction:column;gap:2px}
  .attendance-quota-values{gap:12px;font-size:14px}
}
/* 财务事务 */
.finance-page .finance-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}.finance-page .finance-metrics b{font-size:18px}.finance-page .finance-metrics .finance-metric-alert{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--panel))}.finance-page .finance-metrics .finance-metric-alert b{color:var(--danger)}
.finance-ledger-tools{display:grid;grid-template-columns:150px 150px 150px minmax(180px,1fr) minmax(150px,1fr) minmax(220px,1.4fr) auto;gap:10px;align-items:end;padding:14px;margin-bottom:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.finance-ledger-tools .field{margin:0;min-width:0}.finance-ledger-actions{display:flex;gap:8px}.finance-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.finance-summary-block{min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.finance-summary-block h2{font-size:17px;margin:0 0 12px}.finance-detail-grid small{display:block;color:var(--muted);margin-top:6px}
.finance-ledger-tools{grid-template-columns:repeat(3,minmax(145px,1fr)) repeat(3,minmax(150px,1fr));}.finance-ledger-keyword{grid-column:span 2}.finance-ledger-filter-note{grid-column:1/-1;margin:0;color:var(--muted);font-size:12px}.finance-ledger-detail{padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.finance-ledger-detail .finance-section-head{margin-bottom:12px}.finance-ledger-table{min-width:1900px}.finance-ledger-table th{position:sticky;top:0;z-index:1;background:var(--panel2);white-space:nowrap}.finance-ledger-table td{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finance-ledger-table tbody tr{cursor:pointer}.finance-ledger-table tbody tr:hover,.finance-ledger-table tbody tr:focus{background:color-mix(in srgb,var(--accent) 10%,transparent);outline:none}.finance-ledger-table .finance-status{white-space:nowrap}
@media(max-width:1200px){.finance-page .finance-metrics{grid-template-columns:repeat(3,1fr)}.finance-page .finance-ledger-tools{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.finance-page .finance-metrics{grid-template-columns:repeat(2,1fr)}.finance-page .finance-ledger-tools,.finance-page .finance-summary-grid{grid-template-columns:1fr}.finance-page .finance-ledger-actions .btn{flex:1}}
.attendance-auto-location{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px 12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg,var(--panel2))}.attendance-auto-location span,.attendance-auto-location small{color:var(--muted)}.attendance-auto-location strong{font-size:14px}.attendance-auto-location small{text-align:right}@media(max-width:700px){.attendance-auto-location{grid-template-columns:1fr}.attendance-auto-location small{text-align:left}.finance-ledger-keyword{grid-column:auto}.finance-ledger-detail{padding:10px}.finance-ledger-table{min-width:1750px}}
.finance-page{max-width:1500px;margin:0 auto}.finance-page-head,.finance-section-head,.finance-lines-head,.finance-detail-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.finance-launch-grid{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:10px;margin:18px 0}.finance-launch-grid>button{min-height:92px;text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);padding:16px;cursor:pointer;transition:.16s}.finance-launch-grid>button:hover,.finance-launch-grid>button:focus-visible{border-color:var(--brand);transform:translateY(-1px);outline:none}.finance-launch-grid b{display:block;font-size:16px;margin-bottom:7px}.finance-launch-grid span{display:block;color:var(--muted);font-size:12px;line-height:1.5}.finance-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}.finance-metrics>div{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.finance-metrics span{display:block;color:var(--muted);margin-bottom:6px}.finance-metrics b{font-size:20px}.finance-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid var(--line);margin-bottom:14px}.finance-tabs .active{border-color:#facc15;box-shadow:0 0 0 1px #facc15 inset;color:var(--text)}.finance-request-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:12px}.finance-request-grid>.empty{grid-column:1/-1}.finance-request-card{position:relative;min-height:172px;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);padding:15px;cursor:pointer}.finance-request-card:hover,.finance-request-card:focus-visible{border-color:var(--brand);outline:none}.finance-request-card h3{font-size:16px;margin:14px 0 6px}.finance-request-card p{color:var(--muted);margin:0 0 16px}.finance-request-card>strong{display:block;font-size:22px;color:var(--text)}.finance-request-kind{display:inline-flex;padding:4px 8px;border-radius:999px;background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand);font-size:12px;font-weight:700}.finance-status{float:right;padding:4px 8px;border-radius:999px;font-size:12px;background:var(--input-bg,var(--panel2));color:var(--muted)}.finance-status.done{color:var(--ok)}.finance-status.danger{color:var(--danger)}.finance-status.warn{color:var(--warn)}.finance-status.pending{color:var(--brand2)}.finance-request-foot{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px;margin-top:13px}.finance-modal-wide{width:min(1180px,94vw)!important;max-width:1180px!important;max-height:90vh;overflow:auto}.finance-form .row{align-items:flex-end}.finance-lines-head{margin:12px 0 8px}.finance-lines{display:grid;gap:7px}.finance-line-row{display:grid;grid-template-columns:minmax(180px,1.5fr) 120px 145px minmax(150px,1fr) minmax(160px,1fr) auto;gap:7px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg,var(--panel2))}.finance-line-row input{min-width:0}.finance-submit-toggle{display:flex;align-items:center;gap:8px;margin-top:14px;color:var(--text)}.finance-detail-head{align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:14px}.finance-detail-head h2{margin:8px 0 5px}.finance-detail-head>div:last-child{text-align:right}.finance-detail-head>div:last-child>strong{display:block;font-size:26px;margin-bottom:8px}.finance-detail-grid{display:grid;grid-template-columns:2fr 1fr 1.4fr 1fr;gap:10px;margin:14px 0}.finance-detail-grid>div{background:var(--input-bg,var(--panel2));border:1px solid var(--line);border-radius:10px;padding:11px;min-width:0}.finance-detail-grid label{color:var(--muted);font-size:12px}.finance-detail-grid p{margin:6px 0 0;overflow-wrap:anywhere}.finance-detail section{margin-top:18px}.finance-detail section h3{font-size:15px}.finance-files{display:flex;gap:8px;flex-wrap:wrap}.finance-timeline{display:grid;gap:7px}.finance-timeline>div{display:grid;grid-template-columns:145px 110px 1fr;gap:10px;padding:9px 10px;background:var(--input-bg,var(--panel2));border-left:3px solid var(--brand2);border-radius:6px}.finance-timeline time,.finance-timeline span{color:var(--muted)}.finance-settings{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.finance-type-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-top:12px}.finance-type-list>div{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--input-bg,var(--panel2));border:1px solid var(--line);border-radius:9px;padding:10px}
.finance-launch-grid>button{position:relative;padding-left:72px}.finance-launch-grid>button>i{position:absolute;left:16px;top:50%;width:42px;height:42px;transform:translateY(-50%);display:grid;place-items:center;font-style:normal}.finance-launch-grid .finance-launch-icon{width:42px;height:42px;font-size:32px;line-height:1;color:var(--text)}.finance-payee-tools{display:grid;grid-template-columns:minmax(280px,1fr) auto;gap:8px 12px;align-items:end;margin:8px 0 12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg,var(--panel2))}.finance-payee-tools .field{margin:0}.finance-payee-tools>span{grid-column:1/-1;color:var(--muted);font-size:12px}.finance-payee-actions{display:flex;gap:8px;align-items:center}.finance-payee-tools .btn{white-space:nowrap;margin-bottom:1px}
@media(max-width:1100px){.finance-launch-grid{grid-template-columns:repeat(3,1fr)}.finance-line-row{grid-template-columns:1.4fr 110px 140px 1fr}.finance-line-row [data-fin-line="note"]{grid-column:1/4}.finance-detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.finance-page{padding:0 4px}.finance-page-head{align-items:flex-start}.finance-launch-grid{grid-template-columns:repeat(2,1fr)}.finance-launch-grid>button{min-height:96px;padding:12px 10px 12px 52px}.finance-launch-grid>button>i{left:10px;width:34px;height:34px}.finance-launch-grid .finance-launch-icon{width:34px;height:34px;font-size:26px}.finance-payee-tools{grid-template-columns:1fr}.finance-payee-tools>span{grid-column:1}.finance-payee-actions{width:100%}.finance-payee-actions .btn{flex:1;min-height:42px}.finance-metrics{grid-template-columns:repeat(2,1fr)}.finance-request-grid{grid-template-columns:1fr}.finance-line-row{grid-template-columns:1fr 105px}.finance-line-row [data-fin-line="date"],.finance-line-row [data-fin-line="invoice"],.finance-line-row [data-fin-line="note"]{grid-column:1/-1}.finance-detail-grid{grid-template-columns:1fr}.finance-timeline>div{grid-template-columns:1fr}.finance-detail-head{display:block}.finance-detail-head>div:last-child{text-align:left;margin-top:12px}}

/* ===== 全系统手机浏览器适配（2026-09） =====
   保留原有桌面端结构；小屏仅改变展示和导航方式，不改动业务节点。 */
.mobile-shell-toggle,.mobile-shell-platform-back,.mobile-shell-backdrop{display:none}

@media(max-width:820px){
  html,body{height:auto;min-height:100%;max-width:100%;overflow-x:hidden}
  body{min-height:100dvh;-webkit-text-size-adjust:100%}
  img,video,canvas,svg{max-width:100%}

  /* 通用应用壳：侧栏改为可关闭抽屉 */
  #app>.app{display:block;position:relative;width:100%;min-width:0;min-height:100dvh;overflow:clip}
  #app>.app>.sidebar,
  .work-center-shell:has(.attendance-page)>.sidebar{
    display:flex!important;position:fixed;inset:0 auto 0 0;z-index:1400;
    width:min(86vw,320px);height:100dvh;padding:calc(18px + env(safe-area-inset-top)) 14px calc(18px + env(safe-area-inset-bottom));
    transform:translateX(-105%);visibility:hidden;pointer-events:none;transition:transform .2s ease,visibility 0s linear .2s;overflow-x:hidden;overflow-y:auto;
    box-shadow:18px 0 45px rgba(0,0,0,.32)
  }
  #app>.app.mobile-nav-open>.sidebar{transform:translateX(0);visibility:visible;pointer-events:auto;transition-delay:0s}
  .mobile-shell-toggle{
    display:inline-flex;position:fixed;left:max(10px,env(safe-area-inset-left));top:max(10px,env(safe-area-inset-top));z-index:1450;
    align-items:center;justify-content:center;gap:7px;min-width:82px;height:46px;padding:0 12px;
    border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--panel) 94%,transparent);color:var(--text);
    font-size:15px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.24);backdrop-filter:blur(10px)
  }
  .mobile-shell-toggle-icon{font-size:23px;line-height:1}
  .mobile-shell-platform-back{
    display:inline-flex;position:fixed;left:100px;top:max(10px,env(safe-area-inset-top));z-index:1350;
    align-items:center;justify-content:center;gap:5px;height:46px;padding:0 12px;
    border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--panel) 94%,transparent);color:var(--text);
    font-size:15px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.18);backdrop-filter:blur(10px)
  }
  .mobile-shell-backdrop{display:none;position:fixed;inset:0;z-index:1390;width:100%;height:100%;padding:0;border:0;background:rgba(0,0,0,.58)}
  #app>.app.mobile-nav-open>.mobile-shell-backdrop{display:block}
  body:has(.modal-mask,.p6-overlay,.pc-fs-mask,.img-mask) :is(.mobile-shell-toggle,.mobile-shell-platform-back){display:none}
  #app>.app>.main,
  .work-center-main:has(.attendance-page){
    width:100%;min-width:0;max-width:none;min-height:100dvh;max-height:none;
    padding:calc(68px + env(safe-area-inset-top)) 12px calc(24px + env(safe-area-inset-bottom));
    overflow-x:hidden;overflow-y:visible
  }
  .creative-main{height:auto;min-height:100dvh;max-height:none;overflow:visible!important}
  .sidebar .logo{font-size:21px}.sidebar .nav-item{min-height:48px;font-size:17px}.sidebar .nav-back{min-height:42px}

  /* 页头、工具栏和操作区 */
  :is(.toolbar,.actions,.finance-page-head,.finance-section-head,.finance-lines-head,.attendance-page-head,.attendance-report-tools,.creative-header,.creative-toolbar,.module-page-header,.ops-header,.batch-toolbar,.project-header-actions){flex-wrap:wrap;max-width:100%}
  :is(.toolbar,.actions,.finance-ledger-actions,.attendance-resource-actions)>.btn{min-height:42px}
  .page-title{font-size:22px;line-height:1.35}.page-sub{line-height:1.65}
  .toolbar .grow{flex-basis:100%}
  .toolbar :is(.input-sm,input,select){max-width:100%}
  .stat-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .stat{min-width:0;padding:13px}.stat .num{font-size:22px}
  .card{min-width:0;padding:14px}
  .grid,.weekly-grid,.feedback-admin-list,.notification-card-grid,.approval-card-grid,.my-task-grid{grid-template-columns:1fr!important}
  .badge-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}

  /* 表单：手机端不触发 iOS 自动放大 */
  .field{min-width:0}.field input,.field select,.field textarea,.input-sm{font-size:16px;max-width:100%}
  .modal form .row,.main form .row{flex-wrap:wrap}
  .modal form .row>.field,.main form .row>.field{min-width:min(100%,220px);flex:1 1 220px}
  .department-member-picker,.department-member-list,.people-selection-modal .department-member-list,.user-picker-modal .department-member-list{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .department-member-row{grid-template-columns:78px minmax(0,1fr)!important}

  /* 表格在自身区域内横向滑动，不撑宽整页 */
  .table-wrap,.table-scroll,.attendance-table-wrap,.gantt-wrap,.p6-list-section,.finance-summary-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .main table:not(.no-mobile-scroll),.modal table:not(.no-mobile-scroll){display:block;width:100%;max-width:100%;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  .main table:not(.no-mobile-scroll)>:is(thead,tbody),.modal table:not(.no-mobile-scroll)>:is(thead,tbody){display:table;width:100%;min-width:680px}
  .gantt-label{width:110px}.gantt-row{min-width:720px}

  /* 弹窗和二级浮层：靠底、保留安全区与内部滚动 */
  .modal-mask,.p6-overlay-mask,.pc-fs-mask,.img-mask{padding:8px;align-items:flex-end}
  .modal,.modal.modal-large,.modal.finance-modal-wide,.modal.people-selection-modal,.modal.user-picker-modal,.modal.project-edit-modal,.attendance-modal{
    width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;max-height:94dvh!important;
    margin:0;padding:16px;border-radius:16px 16px 4px 4px;overflow:auto
  }
  .modal .actions{position:sticky;bottom:-16px;z-index:3;margin:18px -16px -16px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line)}
  .modal .actions>.btn{flex:1;min-width:96px;min-height:44px}
  .p6-overlay,.task-card-detail-overlay,.pc-fs-box{
    width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;height:auto!important;max-height:94dvh!important;
    margin:0;border-radius:16px 16px 4px 4px;overflow:auto
  }
  .p6-overlay-head,.p6-overlay-body{padding-left:14px;padding-right:14px}
  .img-box{width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:92dvh}

  /* 项目中心和任务卡 */
  .project-flow-compact{scroll-snap-type:x proximity;padding-bottom:12px}
  .project-flow-compact .tl-step,.project-flow-compact .tl-step.cur,.project-flow-compact .tl-step.active:not(.cur),.project-flow-compact .tl-step:has(.tl-actions),.project-flow-compact .tl-step.approved-active-compact{scroll-snap-align:start}
  .collab-main .pgrid-70{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .unified-task-grid{grid-template-columns:repeat(8,minmax(118px,1fr));overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:8px}
  .unified-task-card{scroll-snap-align:start}
  .task-reminder-list,.light-task-grid{grid-template-columns:1fr!important}
  .linear-stage-detail{grid-template-columns:32px minmax(0,1fr) 58px!important}

  /* 创意工坊 */
  .creative-three-col{grid-template-columns:1fr!important;height:auto!important;overflow:visible!important}
  .creative-resize-handle{display:none!important}
  .creative-col-drafts,.creative-col-tags,.creative-col-competitors{height:auto!important;min-height:0!important;overflow:visible!important;border-right:0!important}
  .creative-header{position:static;padding:12px}.creative-toolbar{width:100%}
  .creative-toolbar>*{max-width:100%}
  .drafts-grid,.competitors-grid,.ai-gallery{max-width:100%}

  /* 产品信息、生产、运营 */
  .product-info-page .po-proj-row{grid-template-columns:1fr!important;overflow:visible}
  .po-production-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important;min-width:0!important;border-left:0;border-right:0}
  .po-media-spec-layout{grid-template-columns:1fr!important;grid-template-rows:auto!important;grid-template-areas:"images" "params" "copyright" "specs" "inspection"!important;height:auto!important;overflow:visible!important;padding:10px}
  .po-media-spec-layout>.po-image-quadrants{height:auto!important;min-height:300px}
  .po-image-quadrants{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .po-product-params-panel,.po-specs-matrix-compact,.po-intro-row-4{grid-template-columns:1fr!important}
  .po-project-strip{grid-auto-columns:min(42vw,160px);overflow-x:auto;scroll-snap-type:x proximity}.po-strip-card{scroll-snap-align:start}
  .po-row-4,.po-row-5,.po-ship-row-7,.po-ship-row{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding:12px}
  .po-img-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px}
  .po-specs-matrix{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px}
  .ops-grid{grid-template-columns:1fr!important}.ops-timeline{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* 工作中心、考勤、财务 */
  .attendance-settings-grid{grid-template-columns:1fr}.attendance-application-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .attendance-punch-card{padding:16px}.attendance-punch-card h2{font-size:25px}
  .attendance-punch-actions{gap:8px}.attendance-punch-actions .btn{min-width:0;white-space:normal}
  .attendance-mobile-back{display:none}
  .finance-launch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-ledger-tools,.finance-summary-grid{grid-template-columns:1fr!important}
  .finance-line-row{grid-template-columns:1fr 100px}.finance-detail-grid{grid-template-columns:1fr}.finance-timeline>div{grid-template-columns:1fr}
  .finance-page-head,.finance-section-head{align-items:flex-start}.finance-section-head>*{max-width:100%}
  .overtime-history{grid-template-columns:1fr}.overtime-file-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .overtime-stats-page .overtime-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}

  /* 首页与合作方页 */
  .platform-wrap{min-height:100dvh;padding:22px 12px calc(28px + env(safe-area-inset-bottom));justify-content:flex-start}
  .platform-grid{grid-template-columns:1fr;width:100%;max-width:430px;gap:12px}
  .platform-card{min-height:0;padding:18px}.ui-icon-platform{width:64px;height:64px}
  .ps-hub{min-height:100dvh;padding:18px 12px}.ps-hub-head{align-items:flex-start;gap:12px}.ps-hub-title{min-width:0}.ps-hub-title h1{font-size:22px}
  .ps-hub-cards{grid-template-columns:1fr;gap:12px}.ps-hub-card{min-height:0;padding:20px}
  .ps-main-full{width:100%;min-width:0}.partner-main{padding:14px 10px}

  /* 顶部提醒在手机菜单按钮下方，避免遮挡 */
  .global-reminder-banner{top:64px;left:10px;right:10px;width:auto;max-width:none}
}

@media(max-width:520px){
  #app>.app>.main,.work-center-main:has(.attendance-page){padding-left:10px;padding-right:10px}
  .login-wrap{padding:12px}.login-card{width:100%;padding:24px 18px;border-radius:14px}
  .badge-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.badge-card{min-width:0}
  .stat-row,.attendance-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .toolbar>.btn,.toolbar>select,.toolbar>input{flex:1 1 auto}
  .collab-main .pgrid-70{grid-template-columns:1fr!important}
  .po-row-4,.po-row-5,.po-ship-row-7,.po-ship-row,.po-specs-matrix{grid-template-columns:1fr!important}
  .po-image-quadrants{grid-template-columns:1fr!important}
  .finance-launch-grid{grid-template-columns:1fr}.finance-line-row{grid-template-columns:1fr}.finance-line-row>*{grid-column:1!important}
  .attendance-application-grid{grid-template-columns:1fr}.attendance-application-grid .attendance-application-button{min-height:86px}
  .attendance-punch-with-overtime{grid-template-columns:1fr}.attendance-punch-actions .btn{min-height:62px}
  .platform-time-actions{width:100%;gap:8px}.platform-time-actions>.platform-time-button{width:auto;min-height:62px;height:62px;font-size:18px}
  .mobile-portal{padding:24px 16px}.mobile-portal-actions .btn{min-height:78px;font-size:22px}
  .modal form .row,.main form .row{display:block}.modal form .row>.field,.main form .row>.field{width:100%}
  :where(.main,.modal) [style*="display:grid"][style*="grid-template-columns"]:not(.task-card-title-row):not(.linear-stage-detail){grid-template-columns:1fr!important}
  .modal .actions{flex-wrap:wrap}.modal .actions>.btn{flex:1 1 120px}
}

@media(max-width:360px){
  .mobile-shell-platform-back{left:96px;padding:0 9px;font-size:14px}
}

@media(hover:none) and (pointer:coarse){
  .nav-item,.nav-back,.btn,.click,.tl-step,.ps-hub-card,.platform-card{touch-action:manipulation}
  .btn:active,.click:active,.platform-card:active,.ps-hub-card:active{transform:scale(.985)}
}

@media(prefers-reduced-motion:reduce){
  .mobile-shell-toggle,#app>.app>.sidebar{transition:none}
}
/* 发布信息固定展示，不参与业务布局。 */
#release-version{position:fixed;right:8px;bottom:4px;z-index:1500;font-size:10px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:3px 6px;cursor:pointer}
#release-version.release-mismatch{color:var(--danger);font-size:12px}
/* Shared review cards: retain theme colours and mobile wrapping. */
.review-queue-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr)); gap:12px; }
.review-queue-card { padding:16px; border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); min-width:0; display:flex; flex-direction:column; gap:10px; overflow-wrap:anywhere; }
.review-queue-card h3,.review-queue-card p { margin:0; }
.review-queue-card p,.review-explanation { color:var(--muted); font-size:13px; line-height:1.7; }
.review-explanation { padding:10px; border:1px solid var(--line); border-radius:8px; margin:8px 0; overflow-wrap:anywhere; }
.review-explanation strong { color:var(--text); }
.review-queue-card footer { display:flex; gap:8px; flex-wrap:wrap; margin-top:auto; }
.review-queue-card footer .btn { min-height:36px; }
.attachment-transfer { position:fixed; bottom:20px; right:20px; z-index:12000; max-width:min(90vw,420px); padding:16px; background:var(--panel); color:var(--text); border:1px solid var(--line); border-radius:var(--radius); overflow-wrap:anywhere; }
.attachment-transfer progress { display:block; width:100%; margin-top:10px; }
