﻿:root{
  --bg:#f4f6f9;
  --bg-2:#eef2f6;
  --panel:#ffffff;
  --panel-soft:#fafbfc;
  --text:#162033;
  --muted:#687386;
  --line:#e3e8ef;
  --line-strong:#d2dae6;
  --primary:#285f9f;
  --primary-strong:#1f4f86;
  --primary-soft:#edf4fb;
  --green:#147a4d;
  --red:#b5413b;
  --amber:#b7791f;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow-md:0 10px 24px rgba(25,36,58,.07);
  --sidebar-width:264px;
  --sidebar-collapsed:10px;
  --radius:8px;
}
*{box-sizing:border-box}
html{height:100%}
body{margin:0;min-height:100%;font-family:"Microsoft YaHei",Segoe UI,Arial,sans-serif;background:linear-gradient(180deg,var(--bg) 0,var(--bg-2) 100%);color:var(--text);font-size:14px;letter-spacing:0}
a{text-decoration:none;color:inherit}
button,input,select,textarea{font:inherit}

.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#f7f9fb,#edf2f7)}
.login-card{width:min(420px,100%);background:rgba(255,255,255,.98);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:34px}
.login-card h1{margin:0 0 8px;font-size:25px;font-weight:800}.login-card p{color:var(--muted);margin:0 0 26px;line-height:1.7}

.app-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh;transition:grid-template-columns .22s ease}
.app-shell.sidebar-collapsed{grid-template-columns:var(--sidebar-collapsed) minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;background:#202838;color:#e6edf6;padding:18px;display:flex;flex-direction:column;gap:18px;border-right:1px solid rgba(255,255,255,.08);overflow:auto;transition:opacity .18s ease,transform .22s ease,padding .22s ease}
.app-shell.sidebar-collapsed .sidebar{padding:0;overflow:hidden;opacity:0;transform:translateX(-18px);pointer-events:none}
.brand{display:flex;align-items:center;gap:12px;padding-bottom:8px}.brand-mark{width:40px;height:40px;border-radius:8px;display:grid;place-items:center;background:#e8edf4;color:#1b2b45;font-weight:900}.brand strong{font-size:15px}.brand span,.sidebar-user span{display:block;color:#aab7c8;font-size:12px;margin-top:3px}
.sidebar nav{display:grid;gap:3px}.sidebar nav a{padding:10px 12px;border-radius:7px;color:#d7e0ec;border:1px solid transparent;line-height:1.25}.sidebar nav a:hover{background:#293345;color:#fff;border-color:#38455c}.sidebar-user{margin-top:auto;border-top:1px solid #344054;padding-top:16px;color:#fff}

.main{min-width:0}.topbar{height:60px;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;box-shadow:var(--shadow-sm)}
.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar h1{font-size:19px;margin:0;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content{padding:18px 20px 24px;max-width:none}
.icon-btn{width:36px;height:36px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:#263448;display:inline-grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-sm)}.icon-btn:hover{border-color:#b9c5d5;background:#f8fafc}.ghost{border:1px solid var(--line-strong);padding:7px 12px;border-radius:7px;color:var(--muted);background:#fff;box-shadow:var(--shadow-sm)}

.grid{display:grid;gap:14px}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px}.card:hover{box-shadow:0 4px 14px rgba(25,36,58,.05)}.card h2{font-size:16px;margin:0 0 10px;font-weight:800}.card h3{font-size:14px}.card p{color:var(--muted);line-height:1.65;margin:4px 0}.stat{position:relative;overflow:hidden}.stat span{display:block;color:var(--muted);font-size:13px}.stat strong{font-size:26px;display:block;margin-top:8px;font-weight:800;letter-spacing:0}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}.subtle-toolbar{border-bottom:1px solid var(--line);padding-bottom:12px}

.field{margin-bottom:0}.field label{display:block;font-weight:700;margin-bottom:7px;color:#344054;font-size:13px}.input,select,textarea{width:100%;border:1px solid var(--line-strong);border-radius:7px;padding:9px 11px;background:#fff;color:var(--text);outline:none;min-height:38px}.input:focus,select:focus,textarea:focus{border-color:#86a9cf;box-shadow:0 0 0 3px rgba(40,95,159,.12)}textarea{resize:vertical;min-height:78px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.full{grid-column:1/-1}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:7px;padding:8px 13px;background:var(--primary);color:#fff;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);white-space:nowrap;min-height:36px}.btn.secondary{background:#fff;color:var(--primary-strong);border-color:#c7d5e6}.btn.danger{background:var(--red)}.btn.success{background:var(--green)}.btn:hover{filter:brightness(.99);border-color:rgba(0,0,0,.08)}
.btn:disabled,.btn.disabled-link{opacity:.55;cursor:not-allowed;filter:grayscale(.2);box-shadow:none;pointer-events:none}
.inline-action-form{display:inline-flex;margin:0;padding:0;vertical-align:middle}
.actions .inline-action-form{display:inline-flex}
.alert{padding:11px 13px;border-radius:7px;margin:0 0 14px;background:#fff4f3;color:#962c27;border:1px solid #f3c7c3}.notice{padding:11px 13px;border-radius:7px;margin:0 0 14px;background:#edf8f2;color:#16603f;border:1px solid #bfe5ce}

.table-scroll{width:100%;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm)}.table{width:100%;border-collapse:separate;border-spacing:0;background:#fff}.table th,.table td{padding:9px 11px;border-bottom:1px solid var(--line);border-right:1px solid #f0f3f7;text-align:left;vertical-align:middle}.table th:last-child,.table td:last-child{border-right:0}.table th{font-size:12px;color:#344054;background:#f7f9fb;font-weight:800;position:sticky;top:0;z-index:4}.table tr:hover td{background:#fbfcfe}.data-table td{font-size:13px}.compact-table th,.compact-table td{font-size:13px;padding:8px 10px}.payroll-table{min-width:1280px}.payroll-table th{white-space:nowrap}.payroll-table td.num,.num{text-align:right;font-variant-numeric:tabular-nums}.sticky-col{position:sticky;left:0;background:#fff;z-index:5;box-shadow:1px 0 0 var(--line)}th.sticky-col{background:#f7f9fb;z-index:6}.actions{display:flex;gap:7px;flex-wrap:wrap}
.badge,.status-draft,.status-locked,.status-paid,.status-pending,.status-approved,.status-rejected{display:inline-flex;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:700}.badge{background:#e7f4ee;color:#16603f}.badge.gray{background:#eef2f6;color:#465468}.badge.warn{background:#fff4d8;color:#8a5f00}.badge.danger-soft{background:#fdeceb;color:#8f2d28}.status-draft,.status-pending{background:#fff6df;color:#8a5a12}.status-locked{background:#eaf2ff;color:#1d4f87}.status-paid,.status-approved{background:#e6f5ed;color:#16603f}.status-rejected{background:#fdeceb;color:#8f2d28}.muted{color:var(--muted);font-size:12px}.kpi-row{display:flex;gap:9px;flex-wrap:wrap}.kpi{padding:9px 11px;border-radius:7px;background:#f8fafc;border:1px solid var(--line)}.kpi span{display:block;color:var(--muted);font-size:12px}.kpi strong{font-size:21px}.small-input{min-width:90px;padding:8px 10px}.mini-textarea{min-width:240px;min-height:64px;padding:8px 10px;border-radius:7px}

.switch{display:inline-flex;align-items:center;cursor:pointer}.switch input{display:none}.switch span{width:40px;height:22px;border-radius:999px;background:#c7d0dc;position:relative;transition:.2s}.switch span:before{content:"";width:16px;height:16px;border-radius:50%;background:#fff;position:absolute;left:3px;top:3px;transition:.2s;box-shadow:0 1px 4px rgba(0,0,0,.18)}.switch input:checked+span{background:var(--green)}.switch input:checked+span:before{left:21px}
.plain-check{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:#344054;font-weight:700}.plain-check input{width:15px;height:15px;accent-color:var(--primary)}.plain-check input:disabled{opacity:.55;cursor:not-allowed}.plain-check span{line-height:1.3}
.monthly-input-table{min-width:1480px}.monthly-input-table th{min-width:180px}.monthly-input-table th:first-child{min-width:110px}.monthly-input-table th:nth-child(2),.monthly-input-table th:nth-child(3){min-width:120px}.monthly-amount{width:130px;text-align:right;font-variant-numeric:tabular-nums}.monthly-note{width:130px;margin-top:6px;font-size:12px;color:var(--muted)}.monthly-input-scroll{max-height:68vh}.payroll-table-card,.content>.table-scroll{box-shadow:var(--shadow-sm)}.monthly-item-state{margin-bottom:5px}.monthly-disabled-col{background:#f5f7fa!important;color:#8a96a8}.monthly-disabled-col .input,.monthly-disabled-col input:disabled{background:#eef2f6;color:#8a96a8;border-color:#d7dee8;cursor:not-allowed;box-shadow:none}
.monthly-row-confirm-col{min-width:105px;text-align:center}.monthly-processed-check{justify-content:center;margin-top:4px}.fullscreen-editor-open{overflow:hidden}.monthly-editor-card.is-fullscreen-editor{position:fixed;inset:8px;z-index:80;margin:0!important;border-radius:8px;display:flex;flex-direction:column;box-shadow:0 18px 60px rgba(15,30,55,.22)}.monthly-editor-card.is-fullscreen-editor form{display:flex;flex-direction:column;min-height:0;flex:1}.monthly-editor-card.is-fullscreen-editor .subtle-toolbar{position:sticky;top:0;z-index:10;background:#fff;border-bottom:1px solid var(--line);margin:-4px -4px 8px;padding:10px 12px}.monthly-editor-card.is-fullscreen-editor .monthly-input-scroll{max-height:none;flex:1;min-height:0}.monthly-editor-card.is-fullscreen-editor .actions:last-child{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:10px 0 0;z-index:10}
.payroll-table-card.is-fullscreen-editor{position:fixed;inset:8px;z-index:1000;margin:0!important;height:calc(100vh - 16px);border-radius:8px;display:flex;flex-direction:column;background:#fff;box-shadow:0 22px 70px rgba(15,30,55,.28)}.payroll-table-card.is-fullscreen-editor .subtle-toolbar{position:sticky;top:0;z-index:12;background:#fff;border-bottom:1px solid var(--line);margin:-4px -4px 8px;padding:10px 12px}.payroll-table-card.is-fullscreen-editor .table-scroll{flex:1;min-height:0;max-height:none;overflow:auto;border-radius:7px}.payroll-table-card.is-fullscreen-editor .payroll-table{min-width:1680px}.payroll-table-card.is-fullscreen-editor .payroll-table th{top:0}.payroll-table-card.is-fullscreen-editor .sticky-col{z-index:8}.payroll-table-card.is-fullscreen-editor th.sticky-col{z-index:13}
.payroll-column-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-2px 0 8px;color:#5f7288;font-size:12px}.payroll-column-status strong{display:inline-flex;align-items:center;border:1px solid #cddff7;background:#eef4ff;color:#0b4f9f;border-radius:999px;padding:3px 8px;font-size:11px}.payroll-column-status span{color:#5f7288}.payroll-category-bar{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}.payroll-category-chip{border:1px solid #d5e2f1;background:#fff;color:#24445f;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800;cursor:pointer;box-shadow:0 1px 2px rgba(0,50,100,.04)}.payroll-category-chip:hover{transform:translateY(-1px);box-shadow:0 8px 16px rgba(0,50,100,.08)}.payroll-category-chip.is-active{box-shadow:0 0 0 3px rgba(0,112,243,.12),0 8px 18px rgba(0,112,243,.12)}.payroll-category-chip.cat-earning{background:#edf8f2;border-color:#bfe5ce;color:#11643f}.payroll-category-chip.cat-pre-tax{background:#fff7df;border-color:#f1d48b;color:#7c5607}.payroll-category-chip.cat-tax{background:#f4edff;border-color:#d7c4ff;color:#5b3b91}.payroll-category-chip.cat-post-tax{background:#fff0ed;border-color:#f4c5bb;color:#9a341f}.payroll-category-chip.cat-company{background:#eaf4ff;border-color:#bedcff;color:#0b5cab}.payroll-category-chip.cat-summary{background:#eef2f6;border-color:#d7dee8;color:#465468}.payroll-column-panel{margin:0 0 10px;padding:10px;border:1px solid #dce8f7;border-radius:7px;background:#f8fbff}.payroll-column-panel-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.payroll-column-panel-head strong{color:#0a2942}.payroll-column-panel-head span{color:#5f7288;font-size:12px}.payroll-column-presets{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.payroll-column-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}.payroll-column-group-title{grid-column:1/-1;margin:3px 0 0;padding:5px 8px;border-radius:6px;font-size:11px;font-weight:900}.payroll-column-group-title.cat-earning{background:#edf8f2;color:#11643f}.payroll-column-group-title.cat-pre-tax-deduction{background:#fff7df;color:#7c5607}.payroll-column-group-title.cat-tax{background:#f4edff;color:#5b3b91}.payroll-column-group-title.cat-post-tax-deduction{background:#fff0ed;color:#9a341f}.payroll-column-group-title.cat-company-cost{background:#eaf4ff;color:#0b5cab}.payroll-column-group-title.cat-summary{background:#eef2f6;color:#465468}.payroll-column-option{align-items:flex-start;padding:7px 8px;border:1px solid #e1ebfa;border-radius:7px;background:#fff}.payroll-column-option.cat-earning{border-left:3px solid #34a66a}.payroll-column-option.cat-pre-tax-deduction{border-left:3px solid #d99b16}.payroll-column-option.cat-tax{border-left:3px solid #7c5cc4}.payroll-column-option.cat-post-tax-deduction{border-left:3px solid #d45c3f}.payroll-column-option.cat-company-cost{border-left:3px solid #2b82d9}.payroll-column-option.cat-summary{border-left:3px solid #7c8ca3}.payroll-column-option span{display:grid;gap:2px}.payroll-column-option em{font-style:normal;color:#6f7f92;font-size:11px}.payroll-col-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:92px}.payroll-col-head span{display:block;line-height:1.35}.payroll-col-head em{font-style:normal;color:#6f7f92;font-size:11px}.payroll-col-hide{width:20px;height:20px;min-width:20px;border:1px solid #cddff7;border-radius:999px;background:#fff;color:#0b4f9f;display:inline-grid;place-items:center;cursor:pointer;font-size:13px;font-weight:900;line-height:1;box-shadow:0 1px 2px rgba(0,50,100,.06)}.payroll-col-hide:hover{background:#e8f1ff;border-color:#9fc4f1;color:#0058c2;transform:translateY(-1px)}.is-hidden-column{display:none!important}
.monthly-setting-table{min-width:1120px}.monthly-setting-table th:first-child,.monthly-setting-table td:first-child{text-align:center;width:74px}.monthly-setting-table th:nth-child(2){min-width:150px}.monthly-setting-table th:nth-child(5),.monthly-setting-table th:nth-child(6){min-width:260px}.monthly-setting-text{width:100%;min-width:240px;min-height:46px}

.collapsible-card.is-collapsed{padding:12px 14px}.collapsible-card.is-collapsed>*:not(.collapsible-header){display:none}.collapsible-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-2px 0 0}.collapsible-card:not(.is-collapsed) .collapsible-header{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line)}.collapsible-title{display:flex;align-items:center;gap:8px;min-width:0}.collapsible-title h2{margin:0}.collapse-toggle{border:1px solid var(--line-strong);background:#fff;color:#344054;border-radius:7px;padding:7px 10px;cursor:pointer;font-weight:700}.collapse-toggle:hover{background:#f7f9fb}.collapse-toggle:before{content:"+";font-weight:900;margin-right:6px}.collapsible-card:not(.is-collapsed) .collapse-toggle:before{content:"-"}.collapsible-card:not(.is-collapsed) .collapse-toggle .open-text{display:none}.collapsible-card.is-collapsed .collapse-toggle .close-text{display:none}

.analysis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.analysis-full{grid-column:1/-1}.chart-bar{display:flex;align-items:flex-end;gap:8px;height:160px;padding:12px 0;border-bottom:1px solid var(--line)}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}.chart-col .bar{width:100%;max-width:48px;border-radius:4px 4px 0 0;background:var(--primary)}.chart-col .bar-label{font-size:11px;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60px}.chart-col .bar-value{font-size:12px;font-weight:700;color:var(--text)}.trend-row{display:flex;gap:4px;align-items:flex-end;height:32px}.trend-cell{flex:1;background:var(--primary-soft);border-radius:2px 2px 0 0;min-height:4px}.ratio-bar{display:flex;height:24px;border-radius:4px;overflow:hidden;margin-top:8px}.ratio-bar .segment{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;white-space:nowrap}

.feature-map-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:linear-gradient(180deg,#fff,#f7fbff)}.feature-map-actions{display:flex;gap:7px;flex-wrap:wrap}.feature-map-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.feature-map-section{padding:13px}.feature-map-section-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid #e1ebfa}.feature-map-index{width:34px;height:34px;border-radius:8px;background:#eef4ff;color:#0070f3;border:1px solid #cddff7;display:grid;place-items:center;font-weight:900;font-size:12px;flex:0 0 auto}.feature-map-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.feature-map-links a,.feature-map-static span{display:block;padding:9px 10px;border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff;color:#172b43;min-height:58px}.feature-map-links a:hover{border-color:#b9d8ff;background:#f1f7ff;box-shadow:0 8px 18px rgba(0,112,243,.08)}.feature-map-links strong,.feature-map-static strong{display:block;font-size:13px;margin-bottom:4px;color:#0a2942}.feature-map-links span,.feature-map-static em{display:block;font-style:normal;font-size:12px;line-height:1.45;color:#66758a}.feature-map-roles{margin-top:12px}.feature-role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.feature-role-grid div{padding:10px;border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff}.feature-role-grid strong{display:block;color:#0a2942;margin-bottom:5px}.feature-role-grid span{display:block;color:#66758a;font-size:12px;line-height:1.45}
.api-test-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:linear-gradient(180deg,#fff,#f8fbff)}.api-test-hero p{margin:4px 0 0;color:var(--muted);font-size:12px}.api-test-kpis .kpi{min-width:110px}.api-json-box{max-height:420px;overflow:auto;margin:8px 0 0;padding:12px;border:1px solid #d8e4f2;border-radius:7px;background:#0f1b2d;color:#dce9ff;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.permission-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:#fbfdff;border-color:#dbe6f3}.permission-hero p{margin:4px 0 0;color:var(--muted);font-size:12px}.permission-hero-actions{display:flex;gap:7px;flex-wrap:wrap}.permission-workbench{display:grid;grid-template-columns:minmax(420px,1.05fr) minmax(360px,.95fr);gap:12px;margin-top:12px}.permission-side-panel{display:grid;gap:12px}.permission-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.permission-panel-head h2{margin:0}.permission-panel-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.permission-group-scroll{max-height:430px}.permission-group-panel .table td{vertical-align:top}.permission-form-card .form-grid{gap:9px}.permission-form-card textarea{min-height:50px}.is-selected-row td{background:#f1f7ff!important}.permission-matrix-card{margin-top:12px}.permission-matrix-scroll{max-height:62vh}.permission-matrix-scroll .table th{top:0}.permission-save-bottom{margin-top:10px}.permission-matrix-card code,.permission-form-card code{font-size:11px}
.feature-logic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.feature-logic-wide{grid-column:1/-1}.feature-logic-card{background:linear-gradient(180deg,#fff,#fbfdff)}.feature-logic-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.feature-logic-flow a{padding:7px 10px;border:1px solid #cddff7;border-radius:7px;background:#eef4ff;color:#0058c2;font-weight:800}.feature-logic-flow span{color:#7c8ca3;font-weight:900}.feature-logic-list{margin:0;padding-left:20px;color:#344054;line-height:1.62}.feature-logic-list li{margin:4px 0}.feature-logic-card h2{margin-bottom:8px}

body.excel-focus .content{padding:12px 14px}.app-shell.sidebar-collapsed .content{padding-left:16px;padding-right:16px}.app-shell.sidebar-collapsed .payroll-table,.app-shell.sidebar-collapsed .monthly-input-table{min-width:1180px}
@media(max-width:980px){.app-shell,.app-shell.sidebar-collapsed{grid-template-columns:1fr}.sidebar{position:fixed;z-index:30;width:260px;transform:translateX(-100%);opacity:0}.app-shell:not(.sidebar-collapsed) .sidebar{transform:translateX(0);opacity:1}.grid.cols-4,.grid.cols-2,.form-grid,.analysis-grid{grid-template-columns:1fr}.content{padding:14px}.topbar{padding:0 14px}.mini-textarea{min-width:180px}.table th,.table td{padding:8px 9px}}

/* Compact enterprise density layer */
body{font-size:13px}
.app-shell.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}
.sidebar{padding:14px;gap:12px}.brand{gap:10px}.brand-mark{width:34px;height:34px}.brand strong{font-size:13px}.brand span,.sidebar-user span{font-size:11px}.sidebar nav{gap:2px}.sidebar nav a{padding:7px 9px;border-radius:6px;font-size:12px}.sidebar-user{padding-top:12px;font-size:12px}
.topbar{height:50px;padding:0 16px}.topbar-left{gap:9px}.topbar h1{font-size:16px}.icon-btn{width:30px;height:30px;border-radius:6px}.ghost{padding:5px 9px;border-radius:6px;font-size:12px}.content{padding:12px 14px 16px}
.grid{gap:10px}.card{padding:11px;border-radius:7px}.card h2{font-size:14px;margin-bottom:7px}.card h3{font-size:13px}.card p{font-size:12px;line-height:1.55}.stat span{font-size:12px}.stat strong{font-size:21px;margin-top:5px}.toolbar{gap:8px;margin-bottom:8px}.subtle-toolbar{padding-bottom:8px}
.field label{font-size:12px;margin-bottom:5px}.input,select,textarea{min-height:32px;padding:6px 8px;border-radius:6px;font-size:12px}textarea{min-height:58px}.form-grid{gap:10px}.btn{min-height:30px;padding:5px 9px;border-radius:6px;font-size:12px;gap:5px}.alert,.notice{padding:8px 10px;margin-bottom:10px;border-radius:6px;font-size:12px}
.table-scroll{border-radius:7px}.table th,.table td{padding:6px 8px;font-size:12px}.table th{font-size:11px}.data-table td,.compact-table th,.compact-table td{font-size:12px}.compact-table th,.compact-table td{padding:5px 7px}.actions{gap:5px}.badge,.status-draft,.status-locked,.status-paid,.status-pending,.status-approved,.status-rejected{font-size:11px;padding:2px 6px}.muted{font-size:11px}.kpi{padding:7px 9px}.kpi span{font-size:11px}.kpi strong{font-size:18px}.mini-textarea{min-height:52px}.monthly-input-scroll{max-height:72vh}.monthly-amount,.monthly-note{width:112px}.monthly-note{margin-top:4px;font-size:11px}
.collapsible-card.is-collapsed{padding:9px 10px}.collapsible-card:not(.is-collapsed) .collapsible-header{margin-bottom:9px;padding-bottom:8px}.collapse-toggle{padding:5px 8px;border-radius:6px;font-size:12px}
body.excel-focus .content,.app-shell.sidebar-collapsed .content{padding:8px 10px 12px}

/* Refined sidebar and compact personnel table */
.sidebar{scrollbar-width:thin;scrollbar-color:#627086 transparent;scrollbar-gutter:stable}
.sidebar::-webkit-scrollbar{width:8px}
.sidebar::-webkit-scrollbar-track{background:transparent}
.sidebar::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#5f6e84,#3f4c60);border:2px solid #202838;border-radius:999px}
.sidebar::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#75849a,#536178)}
.sidebar-toggle{position:relative;overflow:hidden;background:linear-gradient(180deg,#fff,#f6f8fb);border-color:#c8d2df;color:#1d314a}
.sidebar-toggle:after{content:"";position:absolute;inset:auto 5px 5px 5px;height:2px;background:linear-gradient(90deg,transparent,#6f90b5,transparent);opacity:.7}
.toggle-panel-icon{width:16px;height:15px;border:1px solid #304762;border-radius:4px;display:block;position:relative;background:linear-gradient(90deg,#dce8f5 0 5px,#fff 5px 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
.toggle-panel-icon:before,.toggle-panel-icon:after{content:"";position:absolute;right:3px;width:5px;height:1px;background:#304762;border-radius:2px;transition:transform .18s ease,opacity .18s ease}
.toggle-panel-icon:before{top:5px;transform:rotate(35deg)}
.toggle-panel-icon:after{bottom:5px;transform:rotate(-35deg)}
.app-shell.sidebar-collapsed .toggle-panel-icon{background:linear-gradient(90deg,#fff 0 10px,#dce8f5 10px 100%)}
.app-shell.sidebar-collapsed .toggle-panel-icon:before{transform:rotate(-35deg)}
.app-shell.sidebar-collapsed .toggle-panel-icon:after{transform:rotate(35deg)}
.employee-table{min-width:1380px}
.employee-table th,.employee-table td{white-space:nowrap}
.employee-table td:nth-child(8){max-width:170px;overflow:hidden;text-overflow:ellipsis}
.csv-import-box{min-height:260px;font-family:Consolas,"Microsoft YaHei",monospace;line-height:1.55}

/* Minimal Bootstrap login */
body.refined-login{min-height:100vh;background:linear-gradient(135deg,#f7faff 0%,#eef4ff 46%,#f9fbff 100%);font-family:"Microsoft YaHei",Segoe UI,Arial,sans-serif}
.login-simple-shell{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden}
.login-simple-shell:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,112,243,.04) 1px,transparent 1px),linear-gradient(180deg,rgba(0,112,243,.035) 1px,transparent 1px);background-size:42px 42px;mask-image:radial-gradient(circle at center,#000 0,#000 46%,transparent 78%);pointer-events:none}
.login-glow-card{width:min(420px,calc(100vw - 32px));position:relative;z-index:1;background:rgba(255,255,255,.88);border:1px solid rgba(188,207,232,.9);border-radius:18px;padding:34px 34px 26px;box-shadow:0 24px 60px rgba(40,95,159,.14),0 1px 0 rgba(255,255,255,.9) inset;backdrop-filter:blur(18px);animation:loginCardIn .55s cubic-bezier(.2,.8,.2,1) both}
.login-glow-card:before{content:"";position:absolute;inset:-1px;border-radius:18px;background:linear-gradient(135deg,rgba(0,112,243,.28),rgba(255,204,64,.22),rgba(255,255,255,0));opacity:.45;z-index:-1;filter:blur(1px)}
@keyframes loginCardIn{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
.login-simple-brand{display:grid;place-items:center;margin:0 auto 16px;width:54px;height:54px;border-radius:16px;background:linear-gradient(180deg,#fff,#edf5ff);border:1px solid #cddff7;color:#0070f3;box-shadow:0 10px 24px rgba(0,112,243,.14)}
.login-simple-brand span{font-size:26px;font-weight:900;line-height:1}
.login-glow-card h1{margin:0;text-align:center;color:#12243a;font-size:22px;font-weight:800;letter-spacing:0}
.login-glow-card p{text-align:center;color:#6b7b90;margin:8px 0 26px;font-size:13px}
.login-input-wrap{position:relative;margin-bottom:16px;border:1px solid #d7e3f2;border-radius:12px;background:#fff;transition:border-color .22s ease,box-shadow .22s ease,background .22s ease;overflow:hidden}
.login-input-wrap:after{content:"";position:absolute;left:-50%;top:0;width:42%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,214,86,.55),transparent);opacity:0;pointer-events:none}
.login-input-wrap label{display:block;padding:9px 14px 0;margin:0;color:#50627a;font-size:12px;font-weight:700;transition:color .22s ease}
.login-input-wrap .form-control{border:0;background:transparent;box-shadow:none!important;padding:6px 14px 12px;min-height:42px;font-size:15px;color:#17243a}
.login-input-wrap:focus-within{background:#fff9dc;border-color:#e8bc32;box-shadow:0 0 0 4px rgba(255,207,64,.22),0 10px 24px rgba(224,168,20,.14)}
.login-input-wrap:focus-within label{color:#8a5f00}
.login-input-wrap:focus-within:after{animation:loginInputShine 1.4s ease-in-out infinite;opacity:1}
@keyframes loginInputShine{0%{transform:translateX(0)}100%{transform:translateX(360%)}}
.login-primary{height:46px;border:0;border-radius:12px;background:linear-gradient(180deg,#0d7af2,#0067dc);font-size:15px;font-weight:800;box-shadow:0 12px 22px rgba(0,112,243,.22);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}
.login-primary:hover{transform:translateY(-1px);box-shadow:0 16px 28px rgba(0,112,243,.28);filter:brightness(1.02)}
.login-primary:active{transform:translateY(0);box-shadow:0 8px 16px rgba(0,112,243,.18)}
.login-footnote-v2{text-align:center;color:#8a96a8;font-size:12px;margin-top:16px}
@media(max-width:520px){.login-glow-card{padding:28px 22px 22px;border-radius:16px}.login-glow-card h1{font-size:19px}.login-simple-shell{padding:16px}}

/* Blue-white visual system inspired by the supplied HTML reference */
:root{
  --bg:#f4f7fb;
  --bg-2:#eef4ff;
  --panel:#ffffff;
  --panel-soft:#f8fbff;
  --text:#1e2b3a;
  --muted:#5f7288;
  --line:#dce8f7;
  --line-strong:#cddff7;
  --primary:#0070f3;
  --primary-strong:#0058c2;
  --primary-soft:#eef4ff;
  --green:#17845c;
  --red:#bd3b3b;
  --amber:#b98312;
  --shadow-sm:0 6px 18px rgba(0,50,100,.06);
  --shadow-md:0 18px 38px rgba(0,50,100,.12);
}
body:not(.refined-login){background:#f4f7fb;color:#1e2b3a}
.topbar{background:rgba(255,255,255,.92);border-bottom-color:#dce8f7;box-shadow:0 8px 24px rgba(0,50,100,.05)}
.content{background:linear-gradient(180deg,#f4f7fb 0%,#f8fbff 100%)}
.card{background:#fff;border-color:#e1ebfa;box-shadow:0 12px 28px rgba(0,50,100,.07)}
.card:hover{box-shadow:0 18px 34px rgba(0,112,243,.1);border-color:#cddff7}
.card h2,.topbar h1{color:#0a2942}
.kpi,.stat{background:linear-gradient(180deg,#ffffff,#f7fbff);border-color:#dce8f7}
.btn{background:#0070f3;color:#fff;border-color:#0070f3;box-shadow:0 8px 18px rgba(0,112,243,.16)}
.btn:hover{background:#0066dc;border-color:#0066dc;filter:none;transform:translateY(-1px)}
.btn.secondary,.ghost,.icon-btn{background:#eef4ff;color:#0b4f9f;border-color:#cddff7}
.btn.secondary:hover,.ghost:hover,.icon-btn:hover{background:#e1ebfa;border-color:#9fc4f1;color:#08427e}
.input,select,textarea{border-color:#cddff7;background:#fff}
.input:focus,select:focus,textarea:focus{border-color:#0070f3;box-shadow:0 0 0 3px rgba(0,112,243,.12)}
.table-scroll{border-color:#dce8f7;box-shadow:0 10px 24px rgba(0,50,100,.06)}
.table th{background:#eef4ff;color:#1e3a6f;border-bottom-color:#cddff7}
.table td{border-bottom-color:#edf3fb;border-right-color:#eef4ff}
.table tr:hover td{background:#f7fbff}
.badge,.status-paid,.status-approved{background:#e7f7ef;color:#11643f}
.status-draft,.status-pending{background:#fff5d7;color:#8a5f00}
.status-locked{background:#e6f1ff;color:#0058c2}
.notice{background:#edf8f2;border-color:#bee9d4;color:#135c3e}
.alert{background:#fff1f0;border-color:#f1c3c1;color:#9b2f2a}

.sidebar{background:linear-gradient(180deg,#ffffff 0%,#eef4ff 100%);color:#1e2b3a;border-right:1px solid #cddff7;box-shadow:12px 0 28px rgba(0,50,100,.06)}
.brand-mark{background:#0070f3;color:#fff;box-shadow:0 8px 18px rgba(0,112,243,.2)}
.brand span,.sidebar-user span{color:#5f7288}
.sidebar nav a{color:#24445f;border-color:transparent;background:transparent;text-align:center;justify-content:center}
.sidebar nav a:hover{background:#e1ebfa;color:#0058c2;border-color:#cddff7;box-shadow:0 8px 18px rgba(0,112,243,.1)}
.sidebar nav a.workflow-link{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:6px;text-align:left;justify-content:stretch;padding-left:8px;padding-right:10px}
.sidebar nav a.workflow-link .nav-step{justify-self:start}
.sidebar nav a.workflow-link span:last-child{display:block;text-align:center;justify-self:stretch;min-width:0}
.nav-step{display:inline-flex;align-items:center;justify-content:center;width:28px;height:20px;border-radius:999px;background:#eef4ff;border:1px solid #cddff7;color:#0058c2;font-size:10px;font-weight:900;font-variant-numeric:tabular-nums;box-shadow:0 1px 0 rgba(255,255,255,.9) inset}
.sidebar nav a.workflow-link:hover .nav-step{background:#0070f3;border-color:#0070f3;color:#fff}
.nav-section-title{display:flex;align-items:center;justify-content:center;margin:10px 0 5px;padding:6px 8px;text-align:center;color:#0b4f9f;font-size:11px;font-weight:900;letter-spacing:0;background:linear-gradient(180deg,#f8fbff,#e8f1ff);border:1px solid #cddff7;border-radius:7px;box-shadow:0 1px 0 rgba(255,255,255,.9) inset}
.nav-section-title:before,.nav-section-title:after{content:"";height:1px;flex:1;background:#b9d8ff;opacity:.85}
.nav-section-title:before{margin-right:7px}.nav-section-title:after{margin-left:7px}
.sidebar nav .nav-section-title:first-child{margin-top:0}
.sidebar-user{border-top-color:#cddff7;color:#1e2b3a}
.sidebar::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#9fc4f1,#6fa7ea);border-color:#eef4ff}
.required-mark{color:#bd3b3b;font-weight:900}.field-help{margin-top:4px;color:#5f7288;font-size:11px;line-height:1.45}.employee-custom-fields{padding:9px 10px;border:1px solid #dce8f7;border-radius:7px;background:#f8fbff}.employee-custom-field-grid{margin-top:6px}.native-place-selects{display:grid;grid-template-columns:minmax(96px,.9fr) minmax(118px,1.1fr);gap:6px}.native-place-selects select{min-width:0;width:100%}.employee-list-card.is-fullscreen-editor{position:fixed;inset:8px;z-index:80;margin:0!important;border-radius:8px;display:flex;flex-direction:column;box-shadow:0 18px 60px rgba(15,30,55,.22)}.employee-list-card.is-fullscreen-editor .toolbar{position:sticky;top:0;z-index:10;background:#fff;border-bottom:1px solid var(--line);margin:-4px -4px 8px;padding:10px 12px}.employee-list-card.is-fullscreen-editor .table-scroll{flex:1;min-height:0;max-height:none;overflow:auto}.employee-list-card.is-fullscreen-editor .employee-table{min-width:1500px}
.settings-hero{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;background:linear-gradient(180deg,#fff,#f8fbff);padding:12px 16px}.settings-hero h2{margin:0 0 4px}.settings-hero p{margin:0;color:#5f7288;font-size:12px}.settings-hero-kpis{display:grid;grid-template-columns:auto auto;gap:3px 12px;align-items:baseline;min-width:150px}.settings-hero-kpis span{color:#5f7288;font-size:11px}.settings-hero-kpis strong{color:#0a2942;font-size:20px;text-align:right}.settings-workbench{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(300px,.58fr);gap:10px;align-items:start}.settings-main-form{display:contents}.settings-field-card{grid-row:span 3}.settings-field-card .table-scroll{max-height:72vh}.settings-field-card .table{min-width:1160px}.settings-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #edf3fb}.settings-card-head h2{margin:0}.settings-card-head p{margin:3px 0 0;color:#5f7288;font-size:12px;line-height:1.45}.settings-mail-card .form-grid,.settings-add-card .form-grid{grid-template-columns:1fr 1fr;gap:8px}.settings-mail-card textarea,.settings-add-card textarea{min-height:62px}.settings-save-card{padding:8px 10px;background:linear-gradient(180deg,#fff,#f8fbff)}.settings-save-card .actions{justify-content:flex-end}.settings-save-card .btn{min-height:34px;padding:7px 22px;font-size:13px}.settings-birthday-card{grid-column:1/-1;padding:10px 12px}.settings-birthday-card .table{min-width:720px}@media(max-width:1180px){.settings-workbench{grid-template-columns:1fr}.settings-field-card{grid-row:auto}.settings-birthday-card{grid-column:auto}.settings-hero{align-items:flex-start;flex-direction:column}.settings-hero-kpis{min-width:0}}

body.refined-login{background:#f4f7fb;color:#1e2b3a}
.login-simple-shell{background:radial-gradient(circle at 50% 25%,#ffffff 0%,#eef4ff 42%,#f4f7fb 100%)}
.login-simple-shell:before{background:linear-gradient(90deg,rgba(0,112,243,.06) 1px,transparent 1px),linear-gradient(180deg,rgba(0,112,243,.045) 1px,transparent 1px);background-size:36px 36px}
.login-glow-card{--mx:50%;--my:20%;transform-style:preserve-3d;transition:transform .14s ease,box-shadow .22s ease;border-color:#cddff7;background:rgba(255,255,255,.9);box-shadow:0 28px 70px rgba(0,50,100,.18),0 2px 0 rgba(255,255,255,.95) inset}
.login-glow-card:hover{box-shadow:0 34px 84px rgba(0,112,243,.2),0 2px 0 rgba(255,255,255,.95) inset}
.login-glow-card:before{background:conic-gradient(from 0deg,#0070f3,#ffd45a,#b9d8ff,#0070f3);opacity:.42;animation:loginBorderFlow 4.5s linear infinite;filter:blur(1.2px)}
.login-glow-card:after{content:"";position:absolute;inset:0;border-radius:18px;background:radial-gradient(circle at var(--mx) var(--my),rgba(255,255,255,.82),rgba(255,255,255,.18) 24%,transparent 46%);pointer-events:none;mix-blend-mode:screen;opacity:.72}
@keyframes loginBorderFlow{to{transform:rotate(360deg)}}
.login-simple-brand{background:linear-gradient(180deg,#ffffff,#eef4ff);border-color:#cddff7;color:#0070f3;box-shadow:0 12px 26px rgba(0,112,243,.16);transform:translateZ(30px)}
.login-glow-card h1,.login-glow-card p,.login-input-wrap,.login-primary,.login-footnote-v2,.login-glow-card .alert{position:relative;z-index:1;transform:translateZ(22px)}
.login-input-wrap{border-color:#cddff7;box-shadow:0 8px 18px rgba(0,50,100,.04)}
.login-input-wrap:focus-within{background:#fff8d7;border-color:#f1c84b;box-shadow:0 0 0 4px rgba(255,212,90,.24),0 14px 30px rgba(210,156,0,.16)}
.login-primary{background:linear-gradient(180deg,#1a86ff,#0070f3);box-shadow:0 14px 26px rgba(0,112,243,.24)}

/* Settings section dividers */
.settings-section-label{display:flex;align-items:center;gap:7px;margin:10px 0 6px;padding:5px 8px;font-size:11px;font-weight:900;color:#0b4f9f;letter-spacing:0;background:linear-gradient(180deg,#f8fbff,#eef4ff);border:1px solid #dce8f7;border-radius:6px}
.settings-section-label:before,.settings-section-label:after{content:"";height:1px;flex:1;background:#cddff7;opacity:.7}
.settings-section-label:before{margin-right:6px}.settings-section-label:after{margin-left:6px}

/* System settings: keep each form/table section on its own row. */
.settings-workbench{grid-template-columns:1fr;gap:10px;align-items:stretch}
.settings-main-form{display:grid;grid-template-columns:1fr;gap:10px}
.settings-workbench>.card,.settings-main-form>.card,.settings-field-card,.settings-mail-card,.settings-save-card,.settings-add-card,.settings-birthday-card{grid-column:1/-1!important;grid-row:auto;width:100%}
.settings-save-card .actions{justify-content:flex-start}
.settings-save-card .btn{width:auto!important;min-width:180px}
.settings-card-actions{margin-top:10px;padding-top:10px;border-top:1px solid #edf3fb;justify-content:flex-start}

/* Department settings page */
.department-workbench{display:grid;grid-template-columns:1fr;gap:10px}
.department-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:linear-gradient(180deg,#fff,#f8fbff)}
.department-hero h2{margin:0 0 5px}.department-hero p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.department-kpis{display:grid;grid-template-columns:repeat(4,minmax(92px,1fr));gap:8px;min-width:min(520px,100%)}
.department-kpis .kpi{padding:9px 10px}.department-kpis .kpi strong{font-size:18px}
.department-form-card .form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.department-scope-card p{margin-bottom:10px}.department-scope-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.department-scope-grid div{padding:10px;border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff}
.department-scope-grid strong{display:block;margin-bottom:5px;color:#0a2942}.department-scope-grid span{display:block;color:var(--muted);font-size:12px;line-height:1.5}
.department-list-card .toolbar{align-items:flex-start}.department-list-card .toolbar h2{margin-bottom:4px}.department-list-card .toolbar .muted{max-width:820px;line-height:1.5}
.department-table{min-width:920px}.department-table th:first-child,.department-table td:first-child{width:120px}.department-table th:last-child,.department-table td:last-child{width:150px}
@media(max-width:1100px){.department-hero{flex-direction:column}.department-kpis,.department-scope-grid,.department-form-card .form-grid{grid-template-columns:1fr}.department-kpis{min-width:0;width:100%}}

/* Dashboard cockpit and reusable card fullscreen */
.dashboard-cockpit{display:grid;gap:12px}
.dashboard-command{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:linear-gradient(180deg,#fff,#f8fbff)}
.dashboard-command h2{margin:0 0 5px;font-size:18px}
.dashboard-command p{margin:0;color:var(--muted);max-width:760px}
.dashboard-period-form{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.dashboard-period-form label{font-weight:800;color:#344054;font-size:12px}
.dashboard-period-form select{width:132px}
.dashboard-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.cockpit-stat{min-height:94px;border-left:3px solid #d7e3f2;background:linear-gradient(180deg,#fff,#fbfdff)}
.cockpit-stat.primary{border-left-color:var(--primary);background:linear-gradient(180deg,#fff,#f2f7ff)}
.cockpit-stat span{display:block;color:#617187;font-size:12px;font-weight:800}
.cockpit-stat strong{display:block;margin-top:7px;font-size:20px;line-height:1.15;font-weight:900;font-variant-numeric:tabular-nums;color:#10243b}
.cockpit-stat em{display:block;margin-top:7px;font-style:normal;color:#687386;font-size:11px;line-height:1.35}
.dashboard-main-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch}
.dashboard-wide{grid-column:span 2}
.dashboard-chart-card{display:flex;flex-direction:column;min-height:300px;background:#fff}
.dashboard-chart-card{animation:dashboardCardIn .52s cubic-bezier(.2,.8,.2,1) both;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease,filter .22s ease}
.dashboard-chart-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(15,43,70,.09);border-color:#cfdff1;filter:saturate(1.03)}
.dashboard-chart-card .toolbar{align-items:flex-start;border-bottom:1px solid #e6edf5;padding-bottom:8px;margin-bottom:10px}
.dashboard-chart-card .toolbar h2{margin:0 0 4px}.dashboard-chart-card .toolbar p{margin:0;color:#687386;font-size:12px}
.card-fullscreen-toggle{min-width:32px;width:32px;height:32px;padding:0!important;display:inline-grid;place-items:center;font-size:18px;line-height:1;font-weight:800}
.dashboard-chart-controls{display:grid;gap:10px;background:linear-gradient(180deg,#fff,#fbfdff)}
.dashboard-chart-controls-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid #e6edf5;padding-bottom:9px}
.dashboard-chart-controls-head h2{margin:0 0 4px}.dashboard-chart-controls-head p{margin:0;color:#687386;font-size:12px}
.dashboard-data-quality{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);gap:12px;align-items:start;background:linear-gradient(180deg,#fff,#fbfdff);border-left:3px solid #147a4d}.dashboard-data-quality.warn{border-left-color:#b7791f}.dashboard-data-quality.danger{border-left-color:#b5413b}.dashboard-data-quality h2{margin:0 0 5px;font-size:16px}.dashboard-data-quality p{margin:0;color:#687386;font-size:12px;line-height:1.55}.dashboard-quality-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.dashboard-quality-facts div{min-width:0;padding:8px 9px;border:1px solid #e1ebfa;border-radius:7px;background:#fff}.dashboard-quality-facts div.warn{border-color:#f2d28b;background:#fffaf0}.dashboard-quality-facts div.danger{border-color:#efb4ae;background:#fff6f5}.dashboard-quality-facts span{display:block;color:#687386;font-size:11px}.dashboard-quality-facts strong{display:block;margin-top:3px;color:#172b43;font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.dashboard-quality-facts em{display:block;margin-top:2px;color:#7a8797;font-size:10px;font-style:normal;line-height:1.35;overflow-wrap:anywhere}
.dashboard-category-tags{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:2px}
.dashboard-category-tags button{height:32px;border:1px solid #dce8f7;border-radius:999px;background:#fff;color:#344054;padding:0 12px;font-weight:900;font-size:12px;cursor:pointer}
.dashboard-category-tags button:hover{border-color:#b9d8ff;background:#f7fbff}
.dashboard-category-tags button.is-active{color:#fff;border-color:transparent;box-shadow:0 8px 18px rgba(15,43,70,.16);transform:translateY(-1px)}.dashboard-category-tags .cost.is-active{background:#285f9f}.dashboard-category-tags .structure.is-active{background:#147a4d}.dashboard-category-tags .fairness.is-active{background:#6b5ca5}.dashboard-category-tags .risk.is-active{background:#b5413b}.dashboard-category-tags .profile.is-active{background:#b7791f}.dashboard-category-tags .process.is-active{background:#52677f}.dashboard-category-tags .density.is-active{background:#0f766e}.dashboard-category-tags .spatial.is-active{background:#2563a9}.dashboard-category-tags .inequality.is-active{background:#7c3f8c}.dashboard-category-tags .transition.is-active{background:#8a5a12}.dashboard-category-tags .matrix.is-active{background:#334155}.dashboard-category-tags .departmentDim.is-active{background:#245f73}.dashboard-category-tags .employeeDim.is-active{background:#875f1b}.dashboard-category-tags .trendDim.is-active{background:#31568f}.dashboard-category-tags .statDim.is-active{background:#4f5d75}
.dashboard-chart-toggle-grid{display:none}
.dashboard-chart-toggle-grid label{display:flex;align-items:center;gap:7px;padding:8px 9px;border:1px solid #dce8f7;border-radius:7px;background:#fff;color:#344054;font-weight:800;font-size:12px;cursor:pointer}
.dashboard-chart-toggle-grid label:hover{border-color:#b9d8ff;background:#f7fbff}
.dashboard-chart-toggle-grid input{width:15px;height:15px;accent-color:var(--primary)}
.dashboard-canvas-wrap{position:relative;height:260px;min-height:260px;max-height:260px;flex:0 0 260px;width:100%;overflow:hidden}
.dashboard-canvas-wrap.large{height:300px;min-height:300px;max-height:300px;flex-basis:300px}
.dashboard-canvas-wrap.stats-combo{height:300px;min-height:300px;max-height:300px;flex:0 0 300px;margin-top:10px}
.dashboard-canvas-wrap canvas,.dashboard-canvas-wrap .dashboard-vector-chart{width:100%!important;height:100%!important}
.dashboard-plot-wrap{position:relative;height:360px;min-height:360px;max-height:360px;width:100%;overflow:hidden}
.dashboard-plot-wrap>div{width:100%;height:100%}
.dashboard-premium-plot{background:linear-gradient(180deg,#fff,#fbfdff);border-color:#dfe8f3;box-shadow:0 10px 24px rgba(15,43,70,.06)}
.dashboard-premium-plot .dashboard-plot-wrap{border:1px solid #e1ebfa;border-radius:8px;background:radial-gradient(circle at 12% 10%,rgba(40,95,159,.08),transparent 28%),#fff}
.dashboard-kde-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.dashboard-plot-wrap.kde-small{height:280px;min-height:280px;max-height:280px;border:1px solid #e1ebfa;border-radius:8px;background:#fff;overflow:hidden}
.dashboard-stats-matrix{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.dashboard-stat-group{border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff;padding:9px;min-width:0}.dashboard-stat-group h3{margin:0 0 7px;color:#172b43;font-size:13px;line-height:1.25}.dashboard-stat-method{margin:0 0 7px!important;padding:6px 7px;border:1px solid #edf3fb;border-radius:6px;background:#fff;color:#5f7288!important;font-size:11px!important;line-height:1.45!important}.dashboard-stat-method strong{color:#344054}.dashboard-stat-group dl{display:grid;gap:5px;margin:0}.dashboard-stat-group dl div{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.dashboard-stat-group dt{color:#687386;font-size:11px;line-height:1.25}.dashboard-stat-group dd{margin:0;color:#172b43;font-size:11px;line-height:1.25;font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}.dashboard-stat-formulas{grid-column:1/-1;border:1px solid #dce8f7;border-radius:7px;background:#fff;padding:9px 10px}.dashboard-stat-formulas h3{margin:0 0 5px;color:#172b43;font-size:13px}.dashboard-stat-formulas p{margin:0;color:#5f7288;font-size:12px;line-height:1.55}.dashboard-risk-methods{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:7px;margin-top:10px}.dashboard-risk-methods div{border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff;padding:8px 9px}.dashboard-risk-methods span{display:block;color:#687386;font-size:11px}.dashboard-risk-methods strong{display:block;margin-top:3px;color:#172b43;font-size:13px;font-variant-numeric:tabular-nums}.dashboard-risk-methods em{display:block;margin-top:4px;color:#6b7888;font-size:10px;font-style:normal;line-height:1.38}.dashboard-canvas-wrap .dashboard-stats-plot{width:100%!important;height:100%!important}
.is-dashboard-chart-hidden{display:none!important}
.dashboard-small-multiples{display:contents}
.dashboard-matrix-card{min-height:258px;background:linear-gradient(180deg,#fff,#fbfdff);border-color:#dfe8f3}
.dashboard-matrix-chart{border:1px solid #e1ebfa;border-radius:8px;background:#fbfdff;padding:10px;min-width:0}
.dashboard-matrix-chart-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:8px}.dashboard-matrix-chart-head strong{font-size:13px;color:#172b43}.dashboard-matrix-chart-head span{font-size:11px;color:#687386;white-space:nowrap}
.dashboard-mini-canvas-wrap{position:relative;height:176px;min-height:176px;max-height:176px;overflow:hidden}.dashboard-mini-canvas-wrap canvas,.dashboard-mini-canvas-wrap .dashboard-vector-chart{width:100%!important;height:100%!important}
.dashboard-vector-chart{position:relative;min-width:0;overflow:hidden;opacity:.01;transform:translateY(8px) scale(.985);transition:opacity .58s ease,transform .58s cubic-bezier(.2,.8,.2,1)}.dashboard-vector-chart.is-chart-entering,.dashboard-canvas-wrap canvas.is-chart-entering,.dashboard-mini-canvas-wrap canvas.is-chart-entering,.dashboard-plot-wrap>div.is-chart-entering{opacity:.01;transform:translateY(12px) scale(.975)}.dashboard-vector-chart.is-chart-animated,.dashboard-canvas-wrap canvas.is-chart-animated,.dashboard-mini-canvas-wrap canvas.is-chart-animated{opacity:1;transform:none;transition:opacity .62s ease,transform .62s cubic-bezier(.2,.8,.2,1)}.dashboard-vector-chart .main-svg{display:block}.dashboard-vector-chart .modebar{display:none!important}
.dashboard-plot-wrap>div{opacity:.01;transform:translateY(8px) scale(.985);transition:opacity .62s ease,transform .62s cubic-bezier(.2,.8,.2,1)}.dashboard-plot-wrap>div.is-chart-animated{opacity:1;transform:none}
.dashboard-category-tags button{transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease}.dashboard-category-tags button:active{transform:translateY(0) scale(.97)}
.dashboard-chart-card:not(.is-dashboard-chart-hidden){animation:dashboardCardIn .46s cubic-bezier(.2,.8,.2,1) both}
.dashboard-chart-card.is-chart-card-entering{opacity:.01;transform:translateY(14px) scale(.982)}.dashboard-chart-card.is-chart-card-animated{animation:dashboardCardInStrong .68s cubic-bezier(.16,.9,.22,1) both}
@keyframes dashboardCardIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
@keyframes dashboardCardInStrong{0%{opacity:.01;transform:translateY(16px) scale(.978);filter:saturate(.9)}60%{opacity:1;transform:translateY(-2px) scale(1.002);filter:saturate(1.04)}100%{opacity:1;transform:none;filter:none}}
@media (prefers-reduced-motion: reduce){.dashboard-chart-card,.dashboard-vector-chart,.dashboard-plot-wrap>div,.dashboard-canvas-wrap canvas,.dashboard-mini-canvas-wrap canvas,.dashboard-category-tags button{animation:none!important;transition:none!important;transform:none!important;opacity:1!important}}
.dashboard-chart-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}
.dashboard-chart-facts div{padding:8px 9px;border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff}.dashboard-chart-facts div.warn{border-color:#f2d28b;background:#fffaf0}.dashboard-chart-facts div.danger{border-color:#efb4ae;background:#fff6f5}.dashboard-chart-facts span{display:block;color:#687386;font-size:11px}.dashboard-chart-facts strong{display:block;margin-top:3px;color:#172b43;font-variant-numeric:tabular-nums}
.cockpit-trend-chart{height:230px;display:flex;align-items:stretch;gap:10px;padding:8px 0 0;overflow-x:auto}
.cockpit-trend-col{min-width:74px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px}
.trend-bars{height:160px;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:5px;border-bottom:1px solid #dfe7f1;padding:0 5px}
.trend-bars .bar{width:18px;min-height:4px;border-radius:5px 5px 0 0;box-shadow:0 1px 2px rgba(15,23,42,.08)}
.trend-bars .bar.net{background:#256f9f}.trend-bars .bar.cost{background:#b7791f}
.cockpit-trend-col strong{font-size:11px;color:#334155}.cockpit-trend-col em{font-style:normal;font-size:10px;color:#687386;white-space:nowrap}
.dashboard-chart-legend{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:auto;color:#687386;font-size:11px}
.dashboard-chart-legend span{display:inline-flex;align-items:center;gap:5px}.dashboard-chart-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.legend-net{background:#256f9f}.legend-cost{background:#b7791f}
.structure-stack{display:grid;gap:12px;margin-top:4px}.structure-row{display:grid;grid-template-columns:88px minmax(0,1fr) 108px;align-items:center;gap:9px}.structure-row span{font-weight:800;color:#344054;font-size:12px}.structure-row strong{text-align:right;font-variant-numeric:tabular-nums}.structure-row .ratio-bar{height:22px;background:#eef2f6;border-radius:6px;margin:0}.structure-row .segment{height:100%;min-width:28px;border-radius:6px;font-style:normal}.segment.net{background:#147a4d}.segment.deduction{background:#b7791f}.segment.tax{background:#7c5cc4}.segment.company{background:#285f9f}
.rank-bars{display:grid;gap:9px}.rank-row{display:grid;grid-template-columns:minmax(105px,1fr) minmax(120px,1.2fr) 96px;align-items:center;gap:9px}.rank-meta strong{display:block;color:#172b43}.rank-meta span{display:block;color:#687386;font-size:11px;margin-top:2px}.rank-track{height:10px;background:#eef2f6;border-radius:999px;overflow:hidden}.rank-track i{display:block;height:100%;min-width:3px;background:linear-gradient(90deg,#285f9f,#74a7d8);border-radius:999px}.rank-row em{text-align:right;font-style:normal;font-weight:800;font-variant-numeric:tabular-nums;color:#263448}
.budget-gauge{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;align-items:center;min-height:190px}.budget-ring{--p:0;width:136px;height:136px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#285f9f calc(var(--p)*1%),#edf2f7 0);position:relative}.budget-ring:before{content:"";position:absolute;inset:14px;border-radius:50%;background:#fff;border:1px solid #e4ebf4}.budget-ring strong,.budget-ring span{position:relative;z-index:1}.budget-ring strong{font-size:24px;font-weight:900}.budget-ring span{font-size:11px;color:#687386;margin-top:34px;position:absolute}.budget-lines{display:grid;gap:8px}.budget-lines div{display:flex;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff}.budget-lines span{color:#687386}.budget-lines strong{font-variant-numeric:tabular-nums;color:#172b43}
.risk-list{display:grid;gap:8px}.risk-item{border:1px solid #dfe7f1;border-left-width:4px;border-radius:7px;padding:9px 10px;background:#fbfdff}.risk-item strong{display:block;margin-bottom:3px;color:#172b43}.risk-item span{display:block;color:#687386;font-size:12px;line-height:1.45}.risk-item.ok{border-left-color:#147a4d}.risk-item.warn{border-left-color:#b7791f;background:#fffdf7}.risk-item.danger{border-left-color:#b5413b;background:#fff8f7}
.process-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.process-step{position:relative;padding:11px 9px;border:1px solid #dfe7f1;border-radius:7px;background:#f8fafc;min-height:92px}.process-step strong{width:24px;height:24px;display:grid;place-items:center;border-radius:999px;background:#e5ebf3;color:#465468;margin-bottom:8px}.process-step span{display:block;font-weight:900;color:#172b43}.process-step em{display:block;font-style:normal;color:#687386;font-size:11px;margin-top:5px}.process-step.done{background:#f0f8f4;border-color:#bfe5ce}.process-step.done strong{background:#147a4d;color:#fff}.dashboard-action-strip{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:12px}
[data-fullscreen-card].is-fullscreen-editor,.long-table-fullscreen-card.is-fullscreen-editor{position:fixed;inset:8px;z-index:1000;margin:0!important;height:calc(100vh - 16px);border-radius:8px;display:flex;flex-direction:column;background:#fff;box-shadow:0 22px 70px rgba(15,30,55,.28);overflow:hidden}
[data-fullscreen-card].is-fullscreen-editor .toolbar,.long-table-fullscreen-card.is-fullscreen-editor>.toolbar,.long-table-fullscreen-card.is-fullscreen-editor>.permission-panel-head,.long-table-fullscreen-card.is-fullscreen-editor>.settings-card-head{position:sticky;top:0;z-index:12;background:#fff;border-bottom:1px solid var(--line);margin:-4px -4px 10px;padding:10px 12px}
[data-fullscreen-card].is-fullscreen-editor .cockpit-trend-chart{height:min(62vh,560px)}
[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap{height:calc(100vh - 150px);min-height:360px;max-height:none;flex:1 1 auto}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="statsMatrix"]{overflow:auto}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="statsMatrix"] .dashboard-stats-matrix{grid-template-columns:repeat(5,minmax(0,1fr));flex:0 0 auto}
[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.stats-combo{height:min(52vh,560px);min-height:420px;max-height:none;flex:1 0 420px}
[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap{height:calc(100vh - 150px);min-height:420px;max-height:none;flex:1 1 auto}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="kde3d"]{overflow:auto}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="kde3d"]>.dashboard-plot-wrap{height:min(48vh,560px);min-height:380px;max-height:none;flex:0 0 auto}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="kde3d"] .dashboard-kde-grid{grid-template-columns:repeat(2,minmax(0,1fr));flex:0 0 auto}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="kde3d"] .dashboard-plot-wrap.kde-small{height:330px;min-height:330px;max-height:330px;flex:0 0 330px}
[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="moranIndex"] .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="markovMatrix"] .dashboard-plot-wrap{height:calc(100vh - 150px);min-height:460px;max-height:none;flex:1 1 auto}
[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.large{height:calc(100vh - 138px);max-height:none;flex:1 1 auto}
[data-fullscreen-card].is-fullscreen-editor .dashboard-small-multiples{grid-template-columns:repeat(3,minmax(0,1fr));overflow:auto;min-height:0}.dashboard-chart-card.is-fullscreen-editor .dashboard-mini-canvas-wrap{height:240px;min-height:240px;max-height:240px}
[data-fullscreen-card].is-fullscreen-editor.dashboard-matrix-card .dashboard-mini-canvas-wrap{height:calc(100vh - 150px);min-height:420px;max-height:none;flex:1 1 auto}
[data-fullscreen-card].is-fullscreen-editor .dashboard-chart-card,[data-fullscreen-card].is-fullscreen-editor .rank-bars,[data-fullscreen-card].is-fullscreen-editor .risk-list,[data-fullscreen-card].is-fullscreen-editor .process-flow{min-height:0}
[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap,[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.large,[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.stats-combo{height:calc(100vh - 150px)!important;min-height:420px!important;max-height:none!important;flex:1 1 auto!important}
[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="moranIndex"] .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="markovMatrix"] .dashboard-plot-wrap{height:calc(100vh - 150px)!important;min-height:460px!important;max-height:none!important;flex:1 1 auto!important}
[data-fullscreen-card].is-fullscreen-editor.dashboard-matrix-card .dashboard-mini-canvas-wrap{height:calc(100vh - 150px)!important;min-height:420px!important;max-height:none!important;flex:1 1 auto!important}
.long-table-fullscreen-card.is-fullscreen-editor .table-scroll{flex:1;min-height:0;max-height:none;overflow:auto;border-radius:7px}
.long-table-fullscreen-card.is-fullscreen-editor table{min-width:max-content}
@media(max-width:1180px){.dashboard-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-main-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-wide{grid-column:1/-1}.process-flow{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.dashboard-command,.dashboard-chart-controls-head{flex-direction:column}.dashboard-period-form{justify-content:flex-start}.dashboard-kpi-grid,.dashboard-main-grid{grid-template-columns:1fr}.dashboard-wide{grid-column:auto}.structure-row,.rank-row,.budget-gauge,.dashboard-chart-facts{grid-template-columns:1fr}.rank-row em,.structure-row strong{text-align:left}.process-flow{grid-template-columns:1fr}.dashboard-canvas-wrap,.dashboard-canvas-wrap.large{height:260px;min-height:260px;max-height:260px;flex-basis:260px}.dashboard-kde-grid{grid-template-columns:1fr}.dashboard-plot-wrap.kde-small{height:260px;min-height:260px;max-height:260px}}

/* Dashboard responsive refinement */
.dashboard-cockpit,.dashboard-main-grid,.dashboard-kpi-grid,.dashboard-quality-facts,.dashboard-stats-matrix{min-width:0}.dashboard-command>*{min-width:0}.dashboard-period-form .btn,.dashboard-chart-controls-head .btn{white-space:nowrap}.dashboard-main-grid{grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr))}.dashboard-wide{grid-column:span 2}.dashboard-chart-card .toolbar{gap:8px}.dashboard-chart-card .toolbar>div:first-child{min-width:0}.dashboard-chart-card .toolbar h2,.dashboard-chart-card .toolbar p{overflow-wrap:anywhere}.dashboard-category-tags{overflow-x:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.dashboard-category-tags button{flex:0 0 auto}.dashboard-canvas-wrap{height:clamp(230px,24vw,320px);min-height:230px;max-height:320px;flex-basis:clamp(230px,24vw,320px)}.dashboard-canvas-wrap.large,.dashboard-canvas-wrap.stats-combo{height:clamp(260px,28vw,380px);min-height:260px;max-height:380px;flex-basis:clamp(260px,28vw,380px)}.dashboard-plot-wrap{height:clamp(320px,32vw,460px);min-height:320px;max-height:460px}.dashboard-mini-canvas-wrap{height:clamp(168px,18vw,220px);min-height:168px;max-height:220px}.dashboard-matrix-card{min-height:clamp(250px,24vw,310px)}
@media(max-width:1320px){.dashboard-wide{grid-column:1/-1}.dashboard-data-quality{grid-template-columns:1fr}.dashboard-quality-facts{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-stats-matrix{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:980px){.dashboard-command{flex-direction:column}.dashboard-period-form{justify-content:flex-start;width:100%}.dashboard-period-form select{flex:1 1 140px;min-width:140px}.dashboard-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-quality-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-chart-controls-head{flex-direction:column}.dashboard-chart-controls-head .actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.dashboard-chart-card .toolbar{flex-direction:column}.dashboard-chart-card .toolbar .actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.dashboard-main-grid{grid-template-columns:1fr}.dashboard-wide{grid-column:auto}.dashboard-stats-matrix{grid-template-columns:repeat(2,minmax(0,1fr))}.process-flow{grid-template-columns:repeat(2,minmax(0,1fr))}[data-fullscreen-card].is-fullscreen-editor{inset:6px;height:calc(100vh - 12px)}[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap,[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap{height:calc(100vh - 170px);min-height:320px}}
@media(max-width:640px){.dashboard-cockpit{gap:10px}.dashboard-command,.dashboard-chart-controls,.dashboard-data-quality,.dashboard-chart-card{padding:10px}.dashboard-command h2{font-size:16px}.dashboard-kpi-grid,.dashboard-quality-facts,.dashboard-stats-matrix{grid-template-columns:1fr}.cockpit-stat{min-height:78px}.cockpit-stat strong{font-size:18px}.dashboard-period-form{display:grid;grid-template-columns:1fr 1fr;width:100%}.dashboard-period-form label{grid-column:1/-1}.dashboard-period-form select{width:100%;min-width:0;grid-column:1/-1}.dashboard-period-form .btn{width:100%;padding-left:8px;padding-right:8px}.dashboard-category-tags{flex-wrap:nowrap;margin-left:-2px;margin-right:-2px;padding:0 2px 4px}.dashboard-category-tags button{height:30px;padding:0 10px;font-size:11px}.dashboard-canvas-wrap,.dashboard-canvas-wrap.large,.dashboard-canvas-wrap.stats-combo{height:250px;min-height:250px;max-height:250px;flex-basis:250px}.dashboard-plot-wrap{height:300px;min-height:300px;max-height:300px}.dashboard-mini-canvas-wrap{height:190px;min-height:190px;max-height:190px}.dashboard-chart-facts{grid-template-columns:1fr}.dashboard-plot-wrap.kde-small{height:260px;min-height:260px;max-height:260px}.process-flow{grid-template-columns:1fr}[data-fullscreen-card].is-fullscreen-editor{inset:4px;height:calc(100vh - 8px);border-radius:6px}[data-fullscreen-card].is-fullscreen-editor .toolbar{padding:8px 10px}[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap,[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap,[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap{height:calc(100vh - 165px);min-height:260px}.dashboard-chart-card.is-fullscreen-editor .dashboard-mini-canvas-wrap,[data-fullscreen-card].is-fullscreen-editor.dashboard-matrix-card .dashboard-mini-canvas-wrap{height:calc(100vh - 165px);min-height:260px;max-height:none}}
@media(max-width:420px){.dashboard-period-form{grid-template-columns:1fr}.dashboard-chart-controls-head .actions,.dashboard-chart-card .toolbar .actions{display:grid;grid-template-columns:1fr;width:100%}.dashboard-chart-controls-head .actions .btn,.dashboard-chart-card .toolbar .actions .btn{width:100%}.dashboard-canvas-wrap,.dashboard-canvas-wrap.large,.dashboard-canvas-wrap.stats-combo{height:230px;min-height:230px;max-height:230px;flex-basis:230px}.dashboard-plot-wrap{height:280px;min-height:280px;max-height:280px}.dashboard-mini-canvas-wrap{height:180px;min-height:180px;max-height:180px}}

/* Budget monitor facts: keep annual budget, actual cost and risk in one horizontal row. */
.budget-summary-row{display:grid!important;grid-template-columns:1fr!important;gap:7px!important;overflow-x:visible;padding-bottom:0}
.budget-summary-row div{min-width:0;display:flex!important;align-items:center;justify-content:space-between;gap:10px}
.budget-summary-row span{font-size:12px;font-weight:400;line-height:1.25;color:#687386}
.budget-summary-row strong{font-family:"Segoe UI",Arial,"Microsoft YaHei",sans-serif;font-size:12px;line-height:1.25;font-weight:400;font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere;color:#172b43}
.risk-summary-row{display:grid!important;grid-template-columns:1fr!important;gap:7px!important;overflow-x:visible;padding-bottom:0}
.risk-summary-row div{min-width:0;display:flex!important;align-items:center;justify-content:space-between;gap:10px}
.risk-summary-row span{font-size:12px;font-weight:400;line-height:1.25;color:#687386}
.risk-summary-row strong{font-family:"Segoe UI",Arial,"Microsoft YaHei",sans-serif;font-size:12px;line-height:1.25;font-weight:400;font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere;color:#172b43}

/* Dashboard fullscreen icon: keep it anchored to the chart card corner. */
.dashboard-chart-card[data-fullscreen-card]{position:relative}
.dashboard-chart-card[data-fullscreen-card]>.toolbar{padding-right:44px}
.dashboard-chart-card[data-fullscreen-card]>.toolbar>.actions{position:absolute;top:10px;right:10px;width:auto!important;display:block!important;z-index:20}
.dashboard-chart-card[data-fullscreen-card] .card-fullscreen-toggle{min-width:32px!important;width:32px!important;height:32px!important;padding:0!important;display:grid!important;place-items:center!important;font-size:18px!important;line-height:1!important}
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor>.toolbar>.actions{top:10px;right:12px}
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor>.toolbar{padding-right:46px!important}

/* Final fullscreen overrides must stay after responsive chart sizing. */
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor{
  position:fixed!important;
  inset:8px!important;
  z-index:1000!important;
  height:calc(100vh - 16px)!important;
  max-height:none!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.large,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.stats-combo,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="moranIndex"] .dashboard-plot-wrap,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card="markovMatrix"] .dashboard-plot-wrap,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor.dashboard-matrix-card .dashboard-mini-canvas-wrap{
  height:calc(100vh - 150px)!important;
  min-height:420px!important;
  max-height:none!important;
  flex:1 1 auto!important;
  flex-basis:auto!important;
}
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-vector-chart,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap canvas,
.dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap>div{
  width:100%!important;
  height:100%!important;
}
@media(max-width:980px){
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor{inset:6px!important;height:calc(100vh - 12px)!important}
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.large,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.stats-combo,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap{
    height:calc(100vh - 170px)!important;
    min-height:320px!important;
  }
}
@media(max-width:640px){
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor{inset:4px!important;height:calc(100vh - 8px)!important}
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.large,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-canvas-wrap.stats-combo,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor .dashboard-plot-wrap,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor[data-dashboard-card^="kde"] .dashboard-plot-wrap,
  .dashboard-chart-card[data-fullscreen-card].is-fullscreen-editor.dashboard-matrix-card .dashboard-mini-canvas-wrap{
    height:calc(100vh - 165px)!important;
    min-height:260px!important;
  }
}

/* Department detail reconcile: keep the verification chart and detail table stable. */
.dashboard-detail-card{
  min-height:0;
}
.department-reconcile-body{
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);
  gap:10px;
  align-items:stretch;
  min-height:0;
}
.dashboard-detail-card .department-reconcile-plot-wrap{
  height:390px!important;
  min-height:390px!important;
  max-height:390px!important;
  margin-bottom:0;
  border:1px solid #e1ebfa;
  border-radius:8px;
  background:#fbfdff;
}
.dashboard-detail-card .department-reconcile-body>.table-scroll{
  max-height:390px;
  overflow:auto;
  min-width:0;
}
.dashboard-detail-card.is-fullscreen-editor{
  gap:10px;
}
.dashboard-detail-card.is-fullscreen-editor .department-reconcile-body{
  grid-template-columns:minmax(0,1.25fr) minmax(420px,.75fr);
  flex:1 1 auto;
  min-height:0;
}
.dashboard-detail-card.is-fullscreen-editor .department-reconcile-plot-wrap{
  height:100%!important;
  min-height:320px!important;
  max-height:none!important;
  flex:1 1 auto!important;
  margin-bottom:0;
}
.dashboard-detail-card.is-fullscreen-editor .department-reconcile-body>.table-scroll{
  flex:1 1 auto;
  min-height:0;
  max-height:none;
}
@media(max-width:1180px){
  .department-reconcile-body{
    grid-template-columns:1fr;
  }
  .dashboard-detail-card .department-reconcile-body>.table-scroll{
    max-height:300px;
  }
}
@media(max-width:640px){
  .dashboard-detail-card .department-reconcile-plot-wrap{
    height:300px!important;
    min-height:300px!important;
    max-height:300px!important;
  }
  .dashboard-detail-card .department-reconcile-body>.table-scroll{
    max-height:280px;
  }
}

/* Flask migration compatibility layer: keep existing Flask templates on the copied ASP UI framework. */
.page-subtitle{margin:0 0 14px;color:var(--muted);font-size:12px;line-height:1.6}
.employee-list-head{align-items:flex-start}.employee-list-title{min-width:240px}.employee-list-title h2{margin:0 0 4px}.employee-list-title p{margin:0;color:#5f7288;font-size:12px}.employee-list-actions{justify-content:flex-end}.employee-list-actions .btn,.employee-filter-actions .btn{min-width:74px}.employee-filter-bar{display:grid;grid-template-columns:minmax(220px,1.6fr) minmax(150px,1fr) minmax(130px,.8fr) minmax(100px,.65fr) auto;gap:10px;align-items:end;margin:0 0 10px;padding:10px;border:1px solid #e1ebfa;border-radius:7px;background:#fbfdff}.employee-search-field{min-width:0}.employee-record-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 10px;color:#5f7288;font-size:12px}.employee-record-summary span{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border:1px solid #e1ebfa;border-radius:999px;background:#fbfdff}.employee-table-scroll{max-height:calc(100vh - 250px)}.employee-table{min-width:1280px}.employee-table .employee-sticky-col{position:sticky;left:0;z-index:6;background:#fff;box-shadow:1px 0 0 var(--line)}.employee-table th.employee-sticky-col{z-index:9;background:#f7f9fb}.employee-table .employee-action-col{width:128px;text-align:center}.employee-row-actions{display:flex;align-items:center;justify-content:center;gap:5px;min-width:126px}.employee-row-actions .btn{min-width:50px}.employee-table .empty-row{text-align:center;padding:22px 10px}.employee-list-card.is-fullscreen-editor{z-index:1000;background:#fff;height:calc(100vh - 16px)}.employee-list-card.is-fullscreen-editor .employee-filter-bar,.employee-list-card.is-fullscreen-editor .employee-record-summary{flex:0 0 auto}.employee-list-card.is-fullscreen-editor .employee-table-scroll{max-height:none;flex:1}.employee-list-card.is-fullscreen-editor .employee-table{min-width:1500px}
.employee-filter-actions{align-items:end;justify-content:flex-start;min-height:38px}
.pagination-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid #edf3fb}
.pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:34px;color:#66758a;font-weight:800}
.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:14px}
.kpi-grid .kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:13px 14px;min-height:82px}
.kpi-grid .kpi span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}
.kpi-grid .kpi strong{display:block;color:var(--text);font-size:22px;font-weight:900;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.metric-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.metric-row:last-child{border-bottom:0}.metric-row b{font-variant-numeric:tabular-nums}.inline-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inline-form .input{width:auto;min-width:140px}.form-inline-field{display:grid;gap:5px;min-width:160px}.form-inline-field span{font-size:12px;color:#344054;font-weight:700}.analysis-filter-form{justify-content:flex-start}.analysis-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.analysis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.long-table-card{padding:0}.long-table-card>.toolbar{padding:14px 16px 0}.long-table-card>.table-scroll{margin:0 16px 16px;width:calc(100% - 32px)}.btn.primary{background:var(--primary);color:#fff}.login-card .field{margin-bottom:14px}.login-card .btn{width:100%;margin-top:4px}.login-card .muted{text-align:center;margin:14px 0 0}
@media(max-width:1180px){.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:980px){.kpi-grid,.analysis-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.two,.analysis-grid{grid-template-columns:1fr}.inline-form{width:100%;justify-content:flex-start}.employee-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.employee-filter-actions{grid-column:1/-1}.employee-list-actions{justify-content:flex-start}}
@media(max-width:640px){.kpi-grid,.analysis-kpis{grid-template-columns:1fr}.toolbar{align-items:flex-start}.analysis-filter-form .btn,.analysis-filter-form a.btn{width:100%}.form-inline-field{width:100%}.employee-filter-bar{grid-template-columns:1fr}.employee-filter-actions,.employee-list-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.employee-list-actions .btn,.employee-filter-actions .btn{width:100%;min-width:0}.pagination-bar .btn{flex:1 1 auto}}

/* Master-data management pages. */
.master-workbench{display:grid;gap:10px}
.master-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:linear-gradient(180deg,#fff,#f8fbff)}
.master-hero h2{margin:0 0 5px}.master-hero p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.master-form-card .form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.master-table{min-width:980px}.payroll-item-table{min-width:1180px}
.payroll-item-table .small-input{width:118px}.payroll-item-table .mini-textarea{width:100%;min-width:220px}
.self-service-table{min-width:760px}.payroll-detail-table{min-width:860px}.self-service-scroll,.payroll-detail-scroll{margin-top:10px}
@media(max-width:1100px){.master-hero{flex-direction:column}.master-form-card .form-grid{grid-template-columns:1fr}.payroll-item-table .mini-textarea{min-width:180px}}
