/* Kejin UI system: loaded after feature styles.  It only changes presentation. */
/* 2026-10-28 阶段 1：变量换成钉钉浅色系（对比度已校验），深色另配一套；侧栏改浅色。 */
:root{
  --bg:#F5F6F7;--panel:#FFFFFF;--panel2:#F7F8FA;--text:#1F2329;--muted:#646A73;
  --line:#DEE0E3;--line-2:#EFF0F1;
  --brand:#1677FF;--brand2:#0958D9;--brand-btn:#1570F0;--brand-btn-hover:#0F62D6;--brand-text:#0958D9;--brand-soft:#E8F3FF;
  --accent:#FF7D00;
  --ok:#00B42A;--ok-soft:#E8FFEA;--ok-text:#007A22;
  --warn:#FF7D00;--warn-soft:#FFF3E8;--warn-text:#B25000;
  --danger:#F53F3F;--danger-soft:#FFECE8;--danger-text:#CB2634;
  --shadow:0 1px 2px rgba(31,35,41,.04),0 6px 18px rgba(31,35,41,.045);--shadow-lg:0 16px 40px rgba(31,35,41,.16);--r:10px;--r-sm:7px;
}
[data-theme="dark"]{
  --bg:#191B1F;--panel:#23262C;--panel2:#2A2E35;--text:#E8E9EB;--muted:#A6AAB2;
  --line:#3A3F47;--line-2:#30343B;
  --brand:#3D8BFF;--brand2:#6FA8FF;--brand-btn:#2E7BE6;--brand-btn-hover:#4B90F0;--brand-text:#6FA8FF;--brand-soft:#22344D;
  --accent:#F0A35E;
  --ok:#3AD46A;--ok-soft:#17341F;--ok-text:#5BE084;
  --warn:#F0A35E;--warn-soft:#3A2B18;--warn-text:#F5B87A;
  --danger:#F2635F;--danger-soft:#3D2322;--danger-text:#F58B84;
  --shadow:0 1px 3px rgba(0,0,0,.3);--shadow-lg:0 16px 40px rgba(0,0,0,.45);
}
html{background:var(--bg)}
body{font-family:"PingFang SC","Microsoft YaHei",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);letter-spacing:.005em}
button,input,select,textarea{font-family:inherit}
input:not([type="checkbox"]):not([type="radio"]),select,textarea{border-color:var(--line);background:var(--panel);color:var(--text);min-height:38px}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:.78}
input:focus,select:focus,textarea:focus,.rte:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 19%,transparent)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 62%,#fff);outline-offset:2px}

/* Application frame —— 侧栏浅色，系统名单行不折行 */
.sidebar{background:var(--panel);border-right:1px solid var(--line);padding:16px 12px;box-shadow:none;color:var(--text)}
.logo{padding:7px 9px 17px}.logo-mark{background:var(--brand);border-radius:9px;box-shadow:none}
.logo-title{letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:168px;font-size:14px}
.logo-sub{color:var(--muted);white-space:nowrap}
.nav{gap:2px;padding-right:1px}.nav-item{min-height:40px;border-radius:7px;color:var(--muted);font-size:13px;transition:background .16s,color .16s;position:relative}
.nav-item:hover{background:var(--panel2);color:var(--text)}
.nav-item.active{background:var(--brand-soft);box-shadow:inset 2px 0 var(--brand);color:var(--brand-text);font-weight:650}
.nav-item[data-ui-group-start="true"]{margin-top:12px}.nav-item[data-ui-group-start="true"]::before{content:"";position:absolute;left:9px;right:9px;top:-7px;border-top:1px solid var(--line-2)}
.side-foot{border-color:var(--line-2);padding:12px 4px 0}.side-foot .ghost{min-height:36px;border-radius:7px;color:var(--muted)}.side-foot .ghost:hover{color:var(--text)}
.nav-badge{background:var(--danger)}
.topbar{min-height:64px;background:color-mix(in srgb,var(--panel) 92%,transparent);border-color:var(--line);box-shadow:0 1px 0 rgba(31,35,41,.025)}
.crumb{font-size:17px;font-weight:750;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-space-status{font-size:12px;color:var(--muted);padding:5px 9px;border:1px solid var(--line);border-radius:999px;background:var(--panel2)}
.avatar{background:var(--brand)}.view{max-width:1560px;padding-top:24px}

/* Shared information surfaces */
.page-intro{align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:18px}.page-intro h1{font-size:25px;line-height:1.28;letter-spacing:-.025em}.page-intro .eyebrow,.eyebrow{color:var(--brand-text);font-size:11px;font-weight:750;letter-spacing:.07em}
.panel,.card,.workspace-hero,.quick-task-form,.global-search-form,.department-widget,.department-kpi-card,.calculation-card,.handover-center-card,.discussion-post,.complaint-row,.foundation-record,.grant-row,.personal-task,.personal-office-form-card,.personal-office-application,.external-source-row,.external-publication-row{border-color:var(--line);box-shadow:none;background:var(--panel)}
.panel{padding:18px;margin-bottom:16px}.panel-head{padding-bottom:11px;margin-bottom:13px;border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.panel-head h3{font-size:15px;letter-spacing:.01em}.card{padding:15px}.section-head{margin:22px 0 13px}.section-head h2{font-size:19px;letter-spacing:-.015em}.muted{color:var(--muted)}
.state-box,.empty,.search-empty{border:1px dashed color-mix(in srgb,var(--line) 90%,var(--brand));background:var(--panel2);color:var(--muted);border-radius:9px}.state-box{padding:20px}.empty{padding:32px 16px}.empty::before{background:var(--brand-soft);color:var(--brand)}.inline-feedback{border-radius:7px;border-color:color-mix(in srgb,var(--brand) 38%,var(--line));background:color-mix(in srgb,var(--brand-soft) 56%,var(--panel));color:var(--text)}.inline-feedback.error{border-color:color-mix(in srgb,var(--danger) 44%,var(--line));background:color-mix(in srgb,var(--danger-soft) 70%,var(--panel));color:var(--danger-text)}

/* Buttons, forms and status */
.primary{background:var(--brand-btn);border:1px solid var(--brand-btn);border-radius:7px;min-height:38px;box-shadow:none;color:#fff}.primary:hover{background:var(--brand-btn-hover);border-color:var(--brand-btn-hover)}.primary:disabled{background:color-mix(in srgb,var(--brand) 48%,var(--panel));border-color:transparent}.ghost,.link,.danger{min-height:34px;border-radius:7px}.ghost{border:1px solid transparent}.ghost:hover{background:var(--panel2);border-color:var(--line)}.link{color:var(--brand-text)}.link:hover{background:var(--brand-soft)}.danger{color:var(--danger)}.danger:hover{background:var(--danger-soft)}
label{color:var(--text);font-size:12px;font-weight:700}.form,.compact-form,.biz-form-grid,.template-form,.reward-config-form,.automation-builder,.calculation-form,.department-kpi-editor{gap:12px}.field-help{color:var(--muted)}.toggle-row,.switch-row{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}

/* Dense operational data */
table,.biz-table,.external-table-scroll table{border-color:var(--line);font-variant-numeric:tabular-nums}th,td,.biz-table th,.biz-table td,.external-table-scroll th,.external-table-scroll td{border-color:var(--line);padding:10px 11px;color:var(--text);vertical-align:top}th,.biz-table th,.external-table-scroll th{background:var(--panel2);font-size:12px;font-weight:750;letter-spacing:.015em}tr:nth-child(even) td{background:color-mix(in srgb,var(--panel2) 46%,var(--panel))}.table-wrap,.external-table-scroll,.biz-table-host{border:1px solid var(--line);border-radius:9px;overflow:auto;background:var(--panel)}
.toolbar,.report-toolbar,.member-toolbar,.quota-toolbar{background:var(--panel);border-color:var(--line);box-shadow:none;border-radius:9px;padding:10px}.toolbar input,.toolbar select{background:var(--panel2);border-color:var(--line)}
.stat,.department-widget,.biz-kpi,.activation-stat,.quota-item,.workload-item{border-color:var(--line);box-shadow:none;background:var(--panel)}.stat:hover{transform:none;box-shadow:0 6px 16px rgba(31,35,41,.08)}.stat .num,.biz-gauge strong{font-variant-numeric:tabular-nums}.badge,.status-chip,.search-type-chip,.personal-office-kind{font-weight:750}

/* Task and work views */
.task-card,.subtask,.search-result-card,.notification-item,.today-group,.workload-item,.admin-data-item,.member-item,.template-card,.goal-card,.prize-card,.redemption-item{border-color:var(--line);box-shadow:none;background:var(--panel)}.task-card:hover,.search-result-card:hover{border-color:color-mix(in srgb,var(--brand) 44%,var(--line));box-shadow:0 7px 18px rgba(31,35,41,.07)}.board-col{background:var(--panel2);border-color:var(--line);border-radius:9px}.board-col h4{font-size:12px;letter-spacing:.04em}.board-col .count{background:var(--panel);border-color:var(--line)}
.quick-task-form{border-left:4px solid var(--brand);box-shadow:none}.quick-task-copy strong{font-size:16px}.global-search-form{box-shadow:none}.search-result-card{border-left-color:var(--brand)}

/* 任务筛选条：桌面宽屏单行网格（深浅色一致），窄屏两列，超窄屏才竖排 */
@media (min-width:861px){
  #view-tasks>.toolbar{display:grid;grid-template-columns:minmax(210px,1.8fr) repeat(4,minmax(105px,1fr)) auto;align-items:center;flex-wrap:nowrap}
  #view-tasks>.toolbar .search,#view-tasks>.toolbar select{min-width:0;width:100%;margin:0}
  #view-tasks>.toolbar #weeklyReportBtn{white-space:nowrap}
}
[data-theme="dark"] #view-tasks>.toolbar{background:var(--panel)}

/* 个人空间页签：吸附在视口顶部，不再被摘要图表挤出首屏 */
.personal-office-tabs{position:sticky;top:0;z-index:5;background:var(--bg);padding:8px 0}

/* Feature areas that render dynamically */
.department-dashboard-controls,.calculation-toolbar,.handover-center-tabs,.discussion-tabs,.workspace-tabs,.personal-office-tabs,.admin-tabs,.reward-admin-tabs{border-color:var(--line)}
.department-kpi-card,.calculation-rule-card,.calculation-batch-card,.handover-center-card,.discussion-post,.complaint-row,.foundation-record,.grant-row,.personal-office-form-card,.personal-office-application,.external-source-row,.external-publication-row{border-radius:9px}
.department-kpi-status,.calculation-status,.handover-center-status,.discussion-anonymous,.personal-office-kind{background:var(--brand-soft);color:var(--brand2)}.dashboard-svg-card{border-color:var(--line);background:var(--panel);border-radius:9px}.dashboard-svg-table th{background:var(--panel2)!important;color:var(--text)!important}.dashboard-svg-table td{background:var(--panel)!important;color:var(--text)!important}.dashboard-svg-table tr:nth-child(even) td{background:color-mix(in srgb,var(--panel2) 46%,var(--panel))!important}
.calculation-workbench .panel,.department-panel,.handover-center .panel,.personal-office .panel{box-shadow:none}.rte,.owner-picker>summary,.person-picker,.owner-picker-menu{border-color:var(--line);box-shadow:none}.rte-toolbar,.person-picker-head,.person-picker-bulk{background:var(--panel2);border-color:var(--line)}

/* Dialogs are deliberately quiet so task content remains primary. */
.modal,.drawer{backdrop-filter:blur(5px)}.modal{background:rgba(10,29,42,.48)}.modal-card,.drawer-body{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg)}.modal-card{border-radius:12px}.modal-head,.drawer-head{border-color:var(--line);padding-bottom:13px}.drawer-body{border-radius:12px 0 0 12px}.modal-person{background:var(--panel2);border-color:var(--line)}
.login-mask{background:linear-gradient(135deg,#E8F3FF,#F5F6F7 46%,#EFF0F1)}.login-card{border-color:var(--line);box-shadow:0 22px 55px rgba(31,35,41,.16)}.login-logo{background:var(--brand)}.login-primary{background:var(--brand-btn)}.login-primary:hover{background:var(--brand-btn-hover)}[data-theme="dark"] .login-mask{background:#14161A}[data-theme="dark"] .login-field input{background:var(--panel2)}

@media (max-width:900px){.view{padding:20px 20px 72px}.page-intro h1{font-size:23px}.top-space-status{display:none}.panel{padding:16px}.department-widget-grid,.personal-office-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:680px){.view{padding:16px 14px 84px}.topbar{padding:10px 14px}.crumb{font-size:16px}.page-intro{gap:12px}.page-intro h1{font-size:21px}.panel{padding:14px;border-radius:9px}.panel-head{align-items:flex-start;flex-wrap:wrap}.toolbar,.report-toolbar,.member-toolbar,.quota-toolbar{padding:8px}.toolbar>*{min-height:42px}.stat-grid,.department-widget-grid,.personal-office-cards{grid-template-columns:1fr}.modal{padding:10px}.modal-card{max-height:calc(100dvh - 20px);overflow:auto}.drawer-body{width:min(100%,500px);border-radius:0}.table-wrap,.external-table-scroll,.biz-table-host{margin-inline:-2px}.quick-task-form{padding:14px;border-left-width:3px}.side-foot .ghost,.nav-item{min-height:44px}.logo-title{max-width:140px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* The calculation module shares the application's selected theme, not OS preference. */
.cw-workbench,.cw-payslips{--cw-primary:var(--brand);--cw-bg:var(--bg);--cw-card:var(--panel);--cw-text:var(--text);--cw-muted:var(--muted);--cw-border:var(--line);--cw-danger:var(--danger);font-family:inherit;color:var(--text);background:var(--bg)}
.cw-workbench{padding:0}.cw-header{padding-bottom:18px;margin-bottom:20px;border-bottom:1px solid var(--line)}.cw-header h1{font-size:25px}.cw-card,.cw-list,.cw-detail,.cw-list-item,.cw-case,.cw-batch-row{background:var(--panel);border-color:var(--line);color:var(--text)}
.cw-tab,.cw-secondary,.cw-chip{background:var(--panel);border-color:var(--line);color:var(--text)}.cw-tab:hover,.cw-tab[aria-selected="true"],.cw-secondary:hover,.cw-chip:hover,.cw-list-item.selected{background:var(--brand-soft);color:var(--brand2)}.cw-primary{background:var(--brand-btn);border-color:var(--brand-btn);color:white}.cw-primary:hover{background:var(--brand-btn-hover)}.cw-warning{color:var(--warn)}
.cw-workbench input,.cw-workbench select,.cw-workbench textarea,.cw-workbench th{background:var(--panel2);color:var(--text);border-color:var(--line)}
.cw-payslip-row{background:var(--panel);border-color:var(--line)}.cw-payslips{padding:18px 0}
@media(max-width:680px){.cw-header{flex-direction:column}.cw-review-row dl,.cw-payslip-row dl{grid-template-columns:100px minmax(0,1fr)}}

.login-card{background:var(--panel);color:var(--text)}

/* D02-B3-I1 个人首页布局（scoped：仅 .pdl-*；默认关闭时不会渲染） */
.pdl-bar{border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:10px 12px;margin:0 0 12px;background:var(--surface,#fff)}
.pdl-bar .pdl-info{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}
.pdl-bar .pdl-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.pdl-bar .pdl-note{margin:6px 0 0;font-size:12px}
.pdl-bar .pdl-live{margin:4px 0 0;font-size:12px;min-height:1em}
.pdl-bar .pdl-frozen{margin:6px 0 0;font-size:13px}
.pdl-editor{margin-top:10px}
.pdl-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.pdl-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border:1px solid var(--line,#eee);border-radius:8px;padding:6px 8px}
.pdl-row .pdl-title{flex:1 1 140px;min-width:0;font-weight:600}
.pdl-row .pdl-vis{display:inline-flex;gap:6px;align-items:center;font-size:13px}
.pdl-row button{min-height:44px;min-width:64px}
.pdl-bar .pdl-actions button{min-height:44px}
@media (max-width:480px){
  .pdl-row{align-items:stretch}
  .pdl-row .pdl-title{flex:1 1 100%}
  .pdl-row button{flex:1 1 45%;min-height:44px}
  .pdl-bar .pdl-actions button{flex:1 1 100%}
}
