:root{--ink-950: #0d1117;--ink-900: #121820;--ink-800: #18212c;--ink-700: #243140;--ink-600: #3d4b5f;--text: #17202b;--muted: #6a7687;--line: #d7dee8;--line-soft: #e8edf3;--page: #edf2f6;--surface: #ffffff;--surface-soft: #f7f9fc;--cyan: #00a6a6;--cyan-strong: #008f8f;--cyan-soft: #d8fbf7;--green: #25b46b;--amber: #f5a524;--rose: #e44b6f;--violet: #7c5cff;--shadow-soft: 0 16px 42px rgba(18, 24, 32, .09);--shadow-hard: 0 22px 70px rgba(13, 17, 23, .22);color:var(--text);background:var(--page);font-family:Microsoft YaHei,PingFang SC,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(rgba(13,17,23,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(13,17,23,.028) 1px,transparent 1px),var(--page);background-size:28px 28px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}.auth-shell{align-items:center;background:linear-gradient(135deg,rgba(0,166,166,.22),transparent 30%),linear-gradient(315deg,rgba(245,165,36,.18),transparent 34%),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),#0d1117;background-size:auto,auto,34px 34px,34px 34px,auto;display:flex;justify-content:center;min-height:100vh;padding:24px}.auth-panel{background:#fffffff5;border:1px solid rgba(255,255,255,.7);border-radius:8px;box-shadow:var(--shadow-hard);display:grid;gap:26px;max-width:460px;padding:34px;position:relative;width:100%}.auth-panel:before{background:linear-gradient(90deg,var(--cyan),var(--green),var(--amber));content:"";height:4px;left:24px;position:absolute;right:24px;top:0}.brand-lockup{align-items:center;display:flex;gap:16px}.logo-lockup{align-items:start;background:linear-gradient(135deg,rgba(0,166,166,.18),transparent 35%),linear-gradient(315deg,rgba(245,165,36,.15),transparent 36%),#111820;border:1px solid rgba(0,166,166,.22);border-radius:8px;display:grid;gap:10px;padding:18px}.auth-logo-full{display:block;height:auto;max-width:100%;width:330px}.logo-lockup p{color:#d9f7f2;font-size:14px;font-weight:800;margin:0}.brand-mark{align-items:center;background:linear-gradient(145deg,#12202a,#0d1117);border:1px solid rgba(0,166,166,.44);border-radius:8px;box-shadow:inset 0 0 0 1px #ffffff14,0 10px 24px #00a6a62e;color:#fff;display:flex;font-size:18px;font-weight:900;height:58px;justify-content:center;width:58px}.brand-lockup h1{color:var(--ink-950);font-size:30px;letter-spacing:0;line-height:1.1;margin:0}.brand-lockup p{color:var(--muted);margin:6px 0 0}.auth-form{display:grid;gap:14px}.auth-tabs{background:#e8edf3;border:1px solid #dce3ec;border-radius:8px;display:grid;gap:4px;grid-template-columns:1fr 1fr;padding:4px}.auth-tabs button{background:transparent;border:0;border-radius:6px;color:var(--ink-600);min-height:38px;padding:9px 10px}.auth-tabs button.active{background:var(--surface);box-shadow:0 4px 12px #0d111714;color:var(--ink-950);font-weight:800}label{color:var(--ink-600);display:grid;font-size:13px;font-weight:800;gap:7px}input,select,textarea{background:var(--surface);border:1px solid #cbd5e1;border-radius:6px;color:var(--text);min-height:40px;outline:none;padding:9px 11px;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease;width:100%}textarea{resize:vertical}input:hover,select:hover,textarea:hover{border-color:#aeb9c8}input:focus,select:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #00a6a629}.primary-btn,.ghost-btn,.danger-btn,.icon-btn{align-items:center;border:1px solid transparent;border-radius:6px;display:inline-flex;gap:8px;justify-content:center;min-height:40px;padding:9px 14px;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background-color .16s ease;white-space:nowrap}.primary-btn svg,.ghost-btn svg,.danger-btn svg{flex:0 0 auto;height:17px;stroke-width:2.25;width:17px}.primary-btn{background:linear-gradient(135deg,var(--cyan),var(--green));box-shadow:0 10px 24px #00a6a633;color:#fff;font-weight:900}.primary-btn:hover:not(:disabled),.danger-btn:hover:not(:disabled){transform:translateY(-1px)}.ghost-btn{background:var(--surface);border-color:#cbd5e1;color:var(--ink-700)}.ghost-btn:hover:not(:disabled){background:var(--surface-soft);border-color:#aeb9c8}.danger-btn{background:linear-gradient(135deg,#e44b6f,#c9344b);box-shadow:0 10px 22px #e44b6f2e;color:#fff;font-weight:900}.compact{min-height:36px;padding:7px 11px}.icon-btn{background:var(--surface);border-color:#cbd5e1;color:var(--ink-700);height:36px;min-height:36px;min-width:36px;padding:8px}.icon-btn svg{height:16px;stroke-width:2.35;width:16px}.icon-btn:hover:not(:disabled){background:var(--cyan-soft);border-color:#00a6a673;color:var(--cyan-strong)}.error-message,.success-message{border-radius:6px;font-weight:700;margin:0;padding:10px 12px}.error-message{background:#fff1f2;border:1px solid #ffc4cf;color:#b4233f}.success-message{background:#ecfdf3;border:1px solid #bdebd1;color:#147a44}.app-shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,rgba(0,166,166,.18),transparent 28%),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px),var(--ink-950);background-size:auto,28px 28px,auto;border-right:1px solid rgba(255,255,255,.08);color:#fff;display:flex;flex-direction:column;gap:24px;padding:18px}.side-brand{align-items:center;display:flex;gap:11px;padding-bottom:14px}.side-brand span{align-items:center;background:#ffffff14;border:1px solid rgba(0,166,166,.28);border-radius:8px;color:#fff;display:flex;flex:0 0 auto;font-weight:900;height:44px;justify-content:center;width:44px}.side-brand span img{display:block;height:34px;object-fit:contain;width:34px}.side-brand strong{font-size:18px;letter-spacing:0}.sidebar nav{display:grid;gap:8px}.sidebar nav button{align-items:center;background:transparent;border:1px solid transparent;border-radius:8px;color:#b8c5d5;display:flex;font-weight:800;gap:10px;min-height:42px;padding:10px 11px;text-align:left}.sidebar nav svg{flex:0 0 auto;height:18px;stroke-width:2.2;width:18px}.sidebar nav button.active,.sidebar nav button:hover{background:#ffffff14;border-color:#00a6a64d;color:#fff}.sidebar nav button.active{box-shadow:inset 3px 0 0 var(--cyan)}.workspace{display:grid;grid-template-rows:auto 1fr;min-width:0}.topbar{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:15px 24px;position:sticky;top:0;z-index:5}.topbar h2{color:var(--ink-950);font-size:22px;line-height:1.2;margin:0}.topbar p{color:var(--muted);margin:5px 0 0}.page-stack{display:grid;gap:16px;padding:20px 22px 28px}.page-actions{align-items:center;display:flex;justify-content:flex-end}.page-actions>button{align-self:flex-start}.metric-grid{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.metric{background:linear-gradient(180deg,#fffffff5,#f8fafcf5);border:1px solid rgba(215,222,232,.95);border-radius:8px;box-shadow:var(--shadow-soft);min-height:124px;overflow:hidden;padding:18px;position:relative}.metric:before{background:var(--cyan);content:"";height:4px;left:0;position:absolute;right:0;top:0}.metric:nth-child(2):before{background:var(--green)}.metric:nth-child(3):before{background:var(--amber)}.metric:nth-child(4):before{background:var(--violet)}.metric span{color:var(--muted);display:block;font-size:13px;font-weight:800}.metric strong{color:var(--ink-950);display:block;font-size:30px;line-height:1.15;margin-top:13px}.content-grid{display:grid;gap:14px;grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr)}.panel{background:#fffffff5;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-soft);padding:18px}.panel-title{align-items:center;color:var(--ink-950);display:flex;font-size:16px;font-weight:900;gap:8px;margin-bottom:16px}.panel-title svg{color:var(--cyan-strong);height:18px;stroke-width:2.3;width:18px}.field-label{align-items:center;display:inline-flex;gap:4px}.field-label b{color:#dc2626;font-size:14px;line-height:1}.pie-wrap{align-items:center;display:grid;gap:22px;grid-template-columns:230px 1fr}.pie{background:radial-gradient(circle,#ffffff 42%,#edf6f7 43%,transparent 44%);border-radius:50%;filter:drop-shadow(0 14px 24px rgba(13,17,23,.12));height:220px;width:220px}.legend,.status-list{display:grid;gap:9px}.legend span,.status-list div{align-items:center;color:var(--ink-600);display:flex;font-weight:700;gap:8px}.legend i{border-radius:3px;display:inline-block;flex:0 0 auto;height:11px;width:11px}.status-list div{background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:6px;justify-content:space-between;padding:9px 10px}.workload-panel{overflow:hidden}.people-workload{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.user-project-card{align-items:center;background:linear-gradient(180deg,#fff,#f8fbfd);border:1px solid var(--line-soft);border-radius:8px;display:flex;justify-content:space-between;min-height:76px;padding:14px;position:relative;text-align:left}.user-project-card:before{background:#cbd5e1;content:"";height:3px;left:0;position:absolute;right:0;top:0}.user-project-card.has-projects:before{background:linear-gradient(90deg,var(--cyan),var(--green))}.user-project-card:hover{background:#fbfdff;border-color:#00a6a659}.user-project-card strong{color:var(--ink-950);display:block;font-size:16px;line-height:1.2}.user-project-card b{align-items:center;background:var(--ink-950);border-radius:8px;color:#fff;display:inline-flex;flex:0 0 auto;font-size:22px;height:42px;justify-content:center;min-width:42px;padding:0 10px}.role-badge{border:1px solid transparent;border-radius:999px;display:inline-flex;font-size:12px;font-weight:900;line-height:1;margin-top:7px;padding:5px 8px;white-space:nowrap}.role-boss{background:#e8e9ff;border-color:#cfd2ff;color:#4140a5}.role-store{background:#dcf8e8;border-color:#b7ebce;color:#147a44}.role-designer{background:#dff4ff;border-color:#b5e3fa;color:#096189}.role-manager{background:#ffead8;border-color:#ffd0a9;color:#a24a0a}.role-operator{background:#fff0ca;border-color:#ffdc84;color:#895800}.role-outsourcing{background:#f0e7ff;border-color:#dccbff;color:#6736b8}.role-manual,.role-default{background:#eef2f6;border-color:#d9e1eb;color:#455468}.person-card{background:linear-gradient(180deg,#fff,#f8fbfd);border:1px solid var(--line-soft);border-radius:8px;display:grid;gap:12px;min-height:150px;padding:14px;position:relative}.person-card:before{background:#cbd5e1;content:"";height:3px;left:0;position:absolute;right:0;top:0}.person-card.has-projects:before{background:linear-gradient(90deg,var(--cyan),var(--green))}.person-head{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.person-head strong{color:var(--ink-950);display:block;font-size:16px;line-height:1.2}.person-head span{color:var(--muted);display:block;font-size:12px;font-weight:800;margin-top:5px}.person-head b{align-items:center;background:var(--ink-950);border-radius:8px;color:#fff;display:inline-flex;flex:0 0 auto;font-size:22px;height:42px;justify-content:center;min-width:42px;padding:0 10px}.person-statuses{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.person-statuses>span{align-items:center;display:inline-flex;gap:6px}.person-statuses strong{color:var(--ink-700);font-size:12px}.person-projects{display:grid;gap:7px}.person-projects span{align-items:center;background:#f2f6fa;border:1px solid var(--line-soft);border-radius:6px;display:flex;gap:8px;justify-content:space-between;min-width:0;padding:7px 8px}.person-projects em{color:var(--ink-700);font-style:normal;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-projects small{color:var(--muted);font-weight:800}.toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.toolbar select{width:154px}.toolbar-spacer{flex:1}.search-box{align-items:center;background:var(--surface);border:1px solid #cbd5e1;border-radius:8px;display:flex;gap:8px;min-width:330px;padding:0 11px}.search-box svg{color:var(--muted);height:17px;stroke-width:2.35;width:17px}.search-box:focus-within{border-color:var(--cyan);box-shadow:0 0 0 3px #00a6a624}.search-box input{border:0;box-shadow:none;min-height:38px;padding-left:0}.table-shell{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-soft);overflow:auto}.data-table{border-collapse:collapse;min-width:900px;width:100%}.project-table{min-width:1580px}.data-table th,.data-table td{border-bottom:1px solid var(--line-soft);padding:11px 12px;text-align:left;vertical-align:top}.data-table th{background:#f3f7fb;color:var(--ink-600);font-size:12px;letter-spacing:0;position:sticky;top:0;z-index:1}.data-table tr:hover td{background:#fbfdff}.data-table small{color:var(--muted);display:block;margin-top:4px}.strong-cell{color:var(--ink-950);font-weight:900}.wide-cell{max-width:260px;min-width:180px;white-space:normal}.check-cell{min-width:42px;width:42px}.muted{color:#8a96a7}.tag{align-items:center;border:1px solid transparent;border-radius:999px;display:inline-flex;font-size:12px;font-weight:900;line-height:1;padding:6px 9px;white-space:nowrap}.tag-red{background:#ffe4e8;border-color:#ffc4cf;color:#a51e38}.tag-pink{background:#ffe4f1;border-color:#ffc5df;color:#a0185b}.tag-dark{background:#151d27;border-color:#151d27;color:#fff}.tag-yellow{background:#fff0ca;border-color:#ffdc84;color:#895800}.tag-blue{background:#dff4ff;border-color:#b5e3fa;color:#096189}.tag-green{background:#dcf8e8;border-color:#b7ebce;color:#147a44}.tag-gray{background:#eef2f6;border-color:#d9e1eb;color:#455468}.tag-indigo{background:#e8e9ff;border-color:#cfd2ff;color:#4140a5}.tag-teal{background:var(--cyan-soft);border-color:#a9ebe5;color:#087a78}.tag-purple{background:#f0e7ff;border-color:#dccbff;color:#6736b8}.tag-orange{background:#ffead8;border-color:#ffd0a9;color:#a24a0a}.tag-cyan{background:#dff7fb;border-color:#b7edf4;color:#0f6f7b}.tag-rose{background:#ffe4eb;border-color:#ffc3d1;color:#a51e45}.modal-backdrop{align-items:center;background:#0d11179e;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:20px;position:fixed;z-index:10}.modal{background:var(--surface);border:1px solid rgba(255,255,255,.7);border-radius:8px;box-shadow:var(--shadow-hard);display:grid;gap:16px;max-height:92vh;max-width:520px;overflow:auto;padding:20px;width:100%}.large-modal{max-width:980px}.modal-header{align-items:center;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;padding-bottom:12px}.modal-header h3{color:var(--ink-950);font-size:20px;margin:0}.modal-heading{display:grid;gap:5px}.modal-warning{color:#dc2626;font-size:13px;font-weight:900;margin:0}.modal-subtitle{color:var(--muted);font-size:13px;font-weight:800;margin:5px 0 0}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.span-2{grid-column:span 2}.audit-trail{background:#f7f9fc;border:1px solid var(--line-soft);border-radius:8px;display:grid;gap:10px;padding:14px}.audit-trail-title{color:var(--ink-950);font-size:15px;font-weight:900}.audit-list{display:grid;gap:8px;max-height:260px;overflow:auto}.audit-item{background:var(--surface);border:1px solid var(--line-soft);border-radius:8px;display:grid;gap:8px;padding:10px}.audit-item strong{color:var(--ink-950);display:block;font-size:13px}.audit-item small{color:var(--muted);display:block;font-weight:800;margin-top:4px}.audit-item p{align-items:center;color:var(--ink-700);display:flex;flex-wrap:wrap;gap:8px;margin:0}.audit-item span{background:#f2f6fa;border:1px solid var(--line-soft);border-radius:6px;max-width:100%;overflow-wrap:anywhere;padding:6px 8px}.audit-item em{color:var(--muted);font-style:normal;font-weight:900}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.row-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.state-on,.state-off{border:1px solid transparent;border-radius:999px;display:inline-flex;font-size:12px;font-weight:900;padding:6px 9px}.state-on{background:#dcf8e8;border-color:#b7ebce;color:#147a44}.state-off{background:#ffe4e8;border-color:#ffc4cf;color:#a51e38}.checkbox-line{align-items:center;display:flex;flex-direction:row;gap:8px}.checkbox-line input{min-height:auto;width:auto}.empty{align-items:center;color:var(--muted);display:flex;font-weight:700;justify-content:center;min-height:120px;padding:20px}.placeholder-panel{align-items:center;display:grid;justify-items:center;min-height:260px;text-align:center}.placeholder-panel svg{color:var(--cyan-strong)}.placeholder-panel h3{color:var(--ink-950);margin:8px 0 0}.placeholder-panel p{color:var(--muted);font-weight:700;margin:0}@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid{grid-template-columns:1fr}}@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:static}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr))}.pie-wrap,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.toolbar{align-items:stretch}.toolbar select,.search-box{min-width:100%;width:100%}.topbar{align-items:flex-start;gap:12px}}@media(max-width:640px){.auth-panel{padding:26px 20px}.brand-lockup h1{font-size:25px}.metric-grid{grid-template-columns:1fr}.page-stack{padding:16px}.topbar{flex-direction:column}}
