:root{--ink:#17212b;--muted:#6d7986;--line:#dbe3e8;--surface:#fff;--canvas:#f4f7f8;--teal:#0f766e;--teal-dark:#095d57;--orange:#bd6509;--red:#bd3131;--blue:#2364a8;--radius:7px;font-family:"Microsoft YaHei",Arial,sans-serif;color:var(--ink)}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--canvas);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #99ded6;outline-offset:1px}.login-view{min-height:100vh;display:grid;grid-template-columns:1.1fr 390px;align-items:center;gap:80px;max-width:1020px;margin:auto;padding:48px 24px}.login-brand h1{font-size:32px;margin:12px 0;letter-spacing:0}.login-brand p{color:var(--muted);font-size:16px}.login-brand{display:flex;align-items:flex-start;gap:18px}.brand-mark{width:56px;height:56px;border-radius:8px;display:grid;place-items:center;background:var(--teal);color:white;font-weight:bold;font-size:28px;flex:none}.brand-mark.small{width:28px;height:28px;border-radius:5px;font-size:16px}.eyebrow{color:var(--teal)!important;font-size:13px!important;font-weight:bold;margin:6px 0}.login-form,.modal{background:var(--surface);padding:28px;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 14px 36px #22344114}.login-form h2{font-size:20px;margin:0 0 24px}.login-form label,.form-grid label{display:grid;gap:7px;margin:14px 0;font-weight:600}.login-form input,.form-grid input,.form-grid select,.form-grid textarea,.table-toolbar input{width:100%;border:1px solid #bfcbd2;border-radius:5px;padding:10px;background:white;color:var(--ink)}.login-hint{font-size:12px;line-height:1.7;color:var(--muted);margin:17px 0 0}.primary,.secondary,.text-btn{border:0;border-radius:5px;padding:9px 14px;font-weight:600}.primary{background:var(--teal);color:white}.primary:hover{background:var(--teal-dark)}.secondary{background:#e6eff1;color:#155d57}.text-btn{background:transparent;color:var(--teal);padding:7px}.topbar{position:fixed;z-index:5;top:0;width:100%;height:56px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 20px;justify-content:space-between}.top-brand{display:flex;align-items:center;gap:9px;font-weight:700}.topbar-right{display:flex;align-items:center;gap:12px;color:var(--muted)}.icon-btn{border:0;background:transparent;font-size:21px;position:relative;color:var(--ink);width:36px;height:36px;border-radius:5px}.icon-btn:hover{background:#edf3f3}.notice-dot{display:none;position:absolute;width:7px;height:7px;border-radius:50%;background:var(--red);top:7px;right:6px}.notice-dot.visible{display:block}.sidebar{position:fixed;top:56px;bottom:0;width:214px;background:#fff;border-right:1px solid var(--line);padding:14px 10px;z-index:4;overflow-y:auto}.sidebar nav{display:grid;gap:2px}.sidebar button{border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:5px;color:#43515e}.sidebar button:hover{background:#edf5f4}.sidebar button.active{background:#dff0ee;color:#075c56;font-weight:700}.content{margin:56px 0 0 214px;padding:24px;min-height:calc(100vh - 56px);max-width:1600px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.page-head h1{font-size:22px;margin:0}.page-head p{margin:5px 0 0;color:var(--muted)}.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px;margin-bottom:18px}.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px}.kpi .label{color:var(--muted);font-size:12px}.kpi strong{display:block;font-size:22px;margin-top:8px}.content-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(270px,.8fr);gap:16px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px}.panel h2{font-size:16px;margin:0 0 14px}.list-rows{display:grid;gap:0}.list-row{border-top:1px solid var(--line);padding:11px 0;display:flex;justify-content:space-between;gap:10px}.list-row:first-child{border-top:0}.list-row small{display:block;color:var(--muted);margin-top:3px}.badge{border-radius:999px;padding:3px 8px;font-size:12px;background:#e8f1f0;color:#12635c;white-space:nowrap;height:max-content}.badge.risk{background:#fdeaea;color:#a42b2b}.badge.warn{background:#fff1dc;color:#9b580d}.table-toolbar{display:flex;gap:10px;justify-content:space-between;margin-bottom:14px}.table-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:11px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{font-size:12px;color:var(--muted);font-weight:600;background:#fafcfc}tbody tr:hover{background:#f7fbfb}td .link-btn{padding:0;border:0;background:transparent;color:var(--teal);font-weight:600}.empty{padding:30px;color:var(--muted);text-align:center}.loading{padding:42px;text-align:center;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;background:#1c2a3180;z-index:9;display:grid;place-items:center;padding:16px}.modal{width:min(620px,100%);max-height:calc(100vh - 32px);overflow:auto;box-shadow:none}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.modal h2{font-size:18px;margin:0}.close{font-size:24px;border:0;background:transparent;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.form-grid .full{grid-column:1/-1}.form-grid textarea{min-height:74px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.toast{position:fixed;right:18px;bottom:18px;background:#173b38;color:white;padding:11px 15px;border-radius:6px;z-index:20;box-shadow:0 6px 18px #0003}.toast.error{background:#9f2929}.detail-header{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:16px}.detail-header h1{font-size:21px;margin:0 0 7px}.detail-meta{display:flex;flex-wrap:wrap;gap:10px;color:var(--muted)}.timeline{position:relative;margin-left:8px}.timeline-item{position:relative;padding:0 0 15px 20px;border-left:2px solid #d7e3e3}.timeline-item:before{position:absolute;left:-6px;top:2px;content:"";width:10px;height:10px;border-radius:50%;background:var(--teal)}.timeline-item strong{display:block}.timeline-item p,.timeline-item small{margin:4px 0;color:var(--muted)}.quick-action{position:fixed;right:22px;bottom:20px;border:0;border-radius:7px;padding:12px 16px;background:var(--teal);color:#fff;font-weight:700;box-shadow:0 5px 14px #095d5750}.quick-action:hover{background:var(--teal-dark)}.mobile-menu{display:none}.role-note{background:#eef6f5;border-left:3px solid var(--teal);padding:9px 11px;color:#37645f;margin-bottom:16px}.tab-bar{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:14px}.tab-bar button{border:0;background:transparent;padding:9px 10px;color:var(--muted);border-bottom:2px solid transparent}.tab-bar button.active{color:var(--teal);border-color:var(--teal);font-weight:bold}@media(max-width:900px){.login-view{grid-template-columns:1fr;gap:28px;max-width:480px}.login-brand h1{font-size:25px}.sidebar{transform:translateX(-100%);transition:transform .16s}.sidebar.open{transform:translateX(0);box-shadow:8px 0 20px #0002}.content{margin-left:0;padding:17px}.mobile-menu{display:block}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid{grid-template-columns:1fr}.topbar{padding:0 10px}.topbar-right{gap:5px}.topbar-right #user-name{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-action{right:16px;bottom:16px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.page-head{align-items:flex-start}.page-head .primary{white-space:nowrap}}@media(max-width:480px){.login-view{padding:32px 18px}.login-brand{display:block}.login-brand .brand-mark{margin-bottom:15px}.login-form{padding:21px}.kpi-grid{gap:8px}.kpi{padding:12px}.kpi strong{font-size:18px}.content{padding:13px}.page-head h1{font-size:19px}.quick-action span{display:none}.quick-action{font-size:22px;width:48px;height:48px;padding:0;border-radius:50%}}
.metric-bars{display:grid;gap:12px}.metric-bar{display:grid;gap:6px}.metric-bar>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.metric-bar span{display:block;min-height:8px;border-radius:3px;background:#16826c}
.sidebar nav{gap:14px}.nav-group{display:grid;gap:2px}.nav-group h2{margin:4px 12px 5px;color:#7a8791;font-size:12px;font-weight:700}
.workspace-switcher{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:#edf3f3;border:1px solid var(--line);border-radius:6px}.workspace-switcher button{padding:8px 6px!important;text-align:center!important;color:#5e6d78!important;font-size:13px}.workspace-switcher button.active{background:#fff!important;color:var(--teal)!important;box-shadow:0 1px 3px #2342!important;font-weight:700}.workspace-switcher button:hover{background:#f7fbfb}.sidebar [data-workspace-nav]{display:none}.sidebar [data-workspace-nav="personal"]{display:grid}.sidebar:has(~ .content){}#workspace[data-workspace-mode="management"] .sidebar [data-workspace-nav="personal"]{display:none}#workspace[data-workspace-mode="management"] .sidebar [data-workspace-nav="management"]{display:grid}.nav-group[data-workspace-nav="management"]{border-top:1px solid var(--line);padding-top:10px}.nav-group[data-workspace-nav="management"] h2{color:#0d6b63}.nav-group[data-workspace-nav="management"] button:first-of-type{font-weight:700;color:#0c5c56}.workspace-switcher[hidden]+.nav-group{margin-top:0}
.panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.panel-title h2{margin-bottom:3px}.panel-title p,.target-table-head p{margin:0;color:var(--muted);line-height:1.5}.target-panel{display:grid;gap:16px}.target-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.target-summary-card{border:1px solid var(--line);border-radius:var(--radius);padding:15px;background:#fbfdfd;min-width:0}.target-summary-card.is-unset{background:#fffbf4;border-color:#ead9ba}.target-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted);font-size:13px}.target-actual{display:block;font-size:25px;margin:16px 0 2px}.target-caption{color:var(--muted);font-size:12px}.target-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:15px 0 10px;font-size:12px;color:var(--muted)}.target-facts span+span{border-left:1px solid var(--line);padding-left:8px}.target-facts b{display:block;color:var(--ink);font-size:14px;margin-top:3px}.target-progress{height:7px;background:#dfeae9;border-radius:4px;overflow:hidden}.target-progress span{display:block;height:100%;background:var(--teal);border-radius:4px}.target-summary-card small{display:block;color:var(--muted);margin-top:7px}.target-unset-note{color:#8d5d1b;line-height:1.5;margin:16px 0 0;font-size:13px}.target-table-head{padding-top:2px}.target-table-head h2{margin:0 0 3px}.target-empty{color:#8d5d1b;font-size:13px}.table-wrap td small{display:block;color:var(--muted);margin-top:3px}
@media(max-width:900px){.workspace-switcher{margin:0 2px}.target-summary-grid{grid-template-columns:1fr}.panel-title{align-items:flex-start}.target-panel .table-wrap{margin:0 -16px;border-left:0;border-right:0;border-radius:0}}
.panel,.detail-header,.list-row>*,.timeline-item,th,td{min-width:0;overflow-wrap:anywhere;word-break:break-word}
.form-advanced{border-top:1px solid var(--line);margin-top:8px;padding-top:12px}.form-advanced summary{color:var(--teal);cursor:pointer;font-weight:700}.form-advanced .form-grid{margin-top:3px}.detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.nav-subgroup{display:grid;gap:2px;margin:2px 0}.nav-subgroup summary{padding:9px 12px;color:var(--muted);cursor:pointer;font-size:13px;font-weight:700;list-style:none}.nav-subgroup summary::-webkit-details-marker{display:none}.nav-subgroup summary::after{content:'+';float:right}.nav-subgroup[open] summary::after{content:'−'}.nav-subgroup button{margin-left:8px}@media(max-width:900px){.detail-actions{justify-content:flex-start}}
.filter-grid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px 12px;margin-bottom:16px}.filter-grid label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:600}.filter-grid input,.filter-grid select{width:100%;border:1px solid #bfcbd2;border-radius:5px;padding:9px;background:#fff;color:var(--ink)}.filter-actions{display:flex;align-items:end;gap:8px;grid-column:1/-1}@media(max-width:900px){.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.filter-grid{grid-template-columns:1fr}.filter-actions{grid-column:auto}}
