@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800&display=swap');
:root{--green:#146755;--ink:#233c35;--muted:#81908a;--bg:#f4f6f3;--line:#e5eae4}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px 'Noto Sans SC',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:8px;padding:11px 17px;background:var(--green);color:white;font-weight:600}button:hover{filter:brightness(.96)}button:disabled{opacity:.5;cursor:wait}button.light{background:#eef4ef;color:var(--green)}button.ghost{background:white;color:#60736a;border:1px solid var(--line)}button.danger{background:#fff0ec;color:#b7543b}input,select,textarea{border:1px solid #dce4dd;border-radius:7px;padding:11px 12px;background:white;color:var(--ink);width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #14675512}label{display:block;color:#52665d;font-size:13px;margin:16px 0 7px}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-1px}h2{font-size:17px}small,.muted{color:var(--muted)}.shell{display:flex;min-height:100vh}.sidebar{width:220px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:32px 20px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;font-size:21px;font-weight:800;letter-spacing:1px}.brand small{display:block;font-size:9px;letter-spacing:2px;margin-top:3px}.logo{display:grid;place-items:center;width:39px;height:43px;background:var(--green);color:#fff;border-radius:12px;font-size:24px}.nav-caption{font-size:10px;letter-spacing:2px;color:#9aa69e;margin:43px 12px 14px}.nav{display:grid;gap:8px}.nav button{background:transparent;color:#738177;text-align:left;font-size:14px;font-weight:500;display:flex;align-items:center;gap:12px;padding:13px}.nav button.active{background:#eaf3ed;color:var(--green);font-weight:700}.nav i{font-style:normal;font-size:19px;width:23px}.sidebottom{margin-top:auto;padding:20px 10px 0;font-size:11px;line-height:2;color:#91a096}.dot{display:inline-block;width:6px;height:6px;background:#6ca281;border-radius:50%;margin-right:6px}.main{margin-left:220px;width:calc(100% - 220px)}.topbar{height:79px;background:#ffffffba;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 38px}.crumb{font-size:12px;color:#8a978f}.profile{display:flex;align-items:center;gap:12px;font-size:12px}.avatar{width:32px;height:32px;display:grid;place-items:center;background:#e9eee2;color:#71815b;border-radius:50%;font-weight:700}.content{max-width:1450px;margin:auto;padding:34px 38px}.heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:27px}.heading p{font-size:12px;color:#89958e;margin-top:9px}.eyebrow{color:var(--green);font-size:10px;letter-spacing:2px;font-weight:700;margin-bottom:8px}.actions{display:flex;gap:9px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:24px}.stat{padding:22px;background:white;border:1px solid var(--line);border-radius:12px;position:relative}.stat:first-child{background:var(--green);color:white;border-color:var(--green)}.stat-title{font-size:12px;opacity:.7;display:flex;justify-content:space-between;align-items:center}.stat strong{display:inline-block;font-size:39px;letter-spacing:-1px;margin:11px 6px 11px 0;font-weight:600}.stat span.unit{font-size:11px;opacity:.6}.stat .foot{font-size:10px;opacity:.6}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:22px}.panelhead{padding:21px 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eef1ed;gap:12px}.panelhead p{font-size:11px;color:#96a097;margin-top:5px}.badge{font-size:10px;padding:5px 8px;border-radius:5px;background:#edf5ed;color:#538162;white-space:nowrap}.badge.orange{background:#fff3e3;color:#b9853d}.badge.red{background:#fbeee9;color:#b66553}.grid{display:grid;grid-template-columns:1.8fr 1fr;gap:22px}.flow{display:flex;padding:25px 22px;align-items:center;justify-content:space-between;gap:8px}.step{text-align:center;flex:1;font-size:11px;color:#819087}.step b{display:block;color:#455b50;font-size:12px;margin:11px 0 5px}.step em{font-style:normal;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;margin:auto;background:#edf4ed;color:#448264;font-size:20px}.arrow{color:#c3cec5}.quick{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:18px}.quick button{background:#f6f8f4;color:#435d4e;text-align:left;padding:16px 14px;border:1px solid #eaf0e7;font-size:12px}.quick button span{display:block;font-size:10px;color:#98a28f;margin-top:5px;font-weight:400}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{font-size:11px;color:#94a094;font-weight:500;background:#fafbf8;padding:13px 23px}td{font-size:12px;padding:17px 23px;border-bottom:1px solid #f0f3ee}tr:last-child td{border-bottom:0}td strong{font-weight:600}.num{font-variant-numeric:tabular-nums;font-weight:700}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:17px 23px;border-bottom:1px solid var(--line)}.filters input,.filters select{width:auto;font-size:12px;padding:8px;max-width:170px}.empty{text-align:center;padding:45px 20px;color:#97a296;font-size:12px}.empty b{display:block;font-size:24px;color:#c0cdbe;margin-bottom:10px}.summary{display:flex;gap:25px;flex-wrap:wrap;background:#eef5ed;border-radius:9px;padding:20px;margin-bottom:22px;font-size:12px}.summary strong{font-size:24px;margin-left:10px;color:var(--green)}.link{background:none;color:var(--green);padding:6px;font-size:11px}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.loginart{background:#146755;color:#fff;padding:12vh 10%;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.loginart:after{content:'▱';position:absolute;right:30px;top:18%;font-size:400px;color:#ffffff09;transform:rotate(-15deg)}.loginart h1{font-size:46px;line-height:1.45;letter-spacing:1px;margin:60px 0 20px}.loginart p{font-size:13px;line-height:2;color:#c1dbcd}.loginform{display:grid;place-items:center;padding:35px}.loginbox{width:min(365px,100%)}.loginbox h2{font-size:26px}.loginbox>p{color:#97a298;font-size:12px;margin:12px 0 28px}.loginbox button[type=submit]{width:100%;margin-top:26px}.loginbox .switch{display:block;margin:20px auto;color:var(--green);background:none;font-size:12px}.note{font-size:11px;color:#94a192;line-height:1.8;margin-top:25px}.error{color:#b6533f;font-size:12px;margin-top:14px}dialog{border:0;border-radius:15px;padding:28px;width:min(480px,calc(100% - 28px));color:var(--ink);box-shadow:0 20px 80px #153d352a}dialog::backdrop{background:#1d352e70;backdrop-filter:blur(3px)}dialog h2{margin-bottom:5px}dialog .actions{justify-content:flex-end;margin-top:25px}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#233e33;color:white;border-radius:9px;padding:13px 23px;font-size:13px;display:none;z-index:99}.pagefoot{font-size:10px;color:#a0ac9f;display:flex;justify-content:space-between;padding:5px 0 20px}.pendingcard{padding:20px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:15px}.pendingcard p{font-size:12px;color:#8a978b;margin-top:8px}.pendingcard .actions{flex-shrink:0}textarea{resize:vertical}.pill{font-size:10px;border:1px solid #dde7dc;border-radius:20px;padding:5px 10px;color:#7d907d}.mobilebrand{display:none}
@media(min-width:1600px){.content{padding-top:45px}}@media(max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.sidebar{width:190px}.main{margin-left:190px;width:calc(100% - 190px)}.content{padding:26px 24px}.topbar{padding:0 24px}}@media(max-width:700px){.sidebar{position:fixed;inset:auto 0 0;width:100%;height:69px;padding:5px 8px;z-index:20;border-right:0;border-top:1px solid var(--line)}.sidebar>.brand,.nav-caption,.sidebottom{display:none}.nav{display:flex;justify-content:space-around;gap:0}.nav button{display:flex;flex-direction:column;gap:2px;align-items:center;padding:5px 8px;font-size:10px;border-radius:7px}.nav i{font-size:18px;text-align:center}.main{margin:0;width:100%;padding-bottom:72px}.topbar{height:65px;padding:0 18px}.crumb{display:none}.mobilebrand{display:block;font-size:17px;font-weight:800}.profile{gap:7px}.profile button{font-size:10px;padding:7px}.avatar{display:none}.content{padding:25px 16px}.heading{align-items:flex-start}h1{font-size:24px}.heading .actions button{font-size:11px;padding:10px}.heading .actions{max-width:140px;justify-content:flex-end}.heading p{font-size:10px;max-width:200px;line-height:1.8}.stats{gap:10px}.stat{padding:17px}.stat strong{font-size:32px}.stat-title{font-size:11px}.stat .foot{font-size:9px}.panelhead{padding:18px}td,th{padding:14px 17px}.flow{padding:22px 10px;gap:0}.step{font-size:9px}.step b{font-size:10px}.step em{width:32px;height:32px;font-size:17px}.arrow{font-size:10px}.login{grid-template-columns:1fr}.loginart{padding:25px 28px 28px}.loginart h1{font-size:29px;margin:25px 0 10px}.loginart .note{display:none}.loginart p{font-size:11px}.loginform{padding:30px 28px}.loginbox h2{font-size:22px}.pendingcard{padding:18px;align-items:flex-start;flex-direction:column}.filters{padding:12px;gap:7px}.filters input{max-width:145px}.pagefoot{font-size:9px}.summary{gap:18px}.summary strong{font-size:21px}.loginart:after{font-size:200px;top:-10px}.pill{font-size:9px}}
/* 紫蓝玻璃主题 · 与工单系统保持一致 */
:root{--green:#5b5bf6;--ink:#141a2e;--muted:#5f6b7c;--bg:#eef1fa;--line:rgba(20,26,46,.09);--purple-gradient:linear-gradient(135deg,#5b5bf6,#4a55e8);--glass-shadow:0 16px 40px -22px rgba(28,34,72,.34),0 2px 8px -3px rgba(28,34,72,.06);--purple-glow:0 14px 30px -12px rgba(91,91,246,.65)}
body{background:var(--bg)}body:before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(50% 36% at 2% -8%,rgba(150,158,255,.8),transparent 72%),radial-gradient(44% 32% at 104% 4%,rgba(118,222,246,.66),transparent 72%),radial-gradient(48% 36% at -6% 60%,rgba(255,168,214,.56),transparent 74%),radial-gradient(46% 34% at 104% 98%,rgba(255,212,158,.6),transparent 74%),linear-gradient(175deg,#f6f7fd,#edf0fb 45%,#f5f1fb)}
button{border-radius:12px;background-color:#564ff0;background-image:var(--purple-gradient);box-shadow:var(--purple-glow),inset 0 1px 0 #ffffff6b;transition:transform .12s,box-shadow .15s,filter .15s}button:hover{filter:brightness(1.04);box-shadow:0 16px 30px -12px #5b5bf6c4,inset 0 1px 0 #ffffff6b}button:active{transform:translateY(1px);filter:brightness(.95)}button:focus-visible{outline:3px solid #8d8af6;outline-offset:3px}
button.ghost,button.light{background:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.92);color:#46536b;box-shadow:0 8px 20px -16px rgba(28,34,72,.7);font-weight:600}button.light{background:#ecebfe;color:#4038c9}button.danger{background:#fff0f4;color:#b4264d;border:1px solid #eeb6c6;box-shadow:0 8px 20px -16px #ba4772}
input,select,textarea{background:rgba(255,255,255,.86);border:1px solid #d9deed;border-radius:11px;color:#263149;box-shadow:inset 0 1px 3px #23326005}input:focus,select:focus,textarea:focus{border-color:#8c87f5;box-shadow:0 0 0 4px #5b5bf62b}label{color:#46536b}
.sidebar{background:rgba(255,255,255,.66);border-color:rgba(255,255,255,.92);box-shadow:6px 0 25px -20px #29345b;backdrop-filter:blur(18px)}.logo{background:var(--purple-gradient);box-shadow:0 7px 15px -7px #4b46d8}.brand small{color:#728098}.nav-caption{color:#6e7b95}.nav button{color:#46536b;background:none;box-shadow:none;border-radius:14px;font-weight:600}.nav button.active{background-color:#564ff0;background-image:var(--purple-gradient);color:white;box-shadow:var(--purple-glow),inset 0 1px 0 #ffffff6b}.sidebottom{color:#6b7990}.dot{background:#5b5bf6}.topbar{background:rgba(238,240,251,.83);border-color:#ffffffb8;box-shadow:0 8px 20px -20px #2c315c;backdrop-filter:blur(18px)}.crumb{color:#62718b}.avatar{background:#e1defe;color:#5145b6;box-shadow:inset 0 1px 0 #fff}.pill{border-color:#d7d3f9;color:#5145a0;background:#e9e6fd}.heading p{color:#64718b}.eyebrow{color:#5953ba}
.panel,.stat{background:linear-gradient(155deg,#ffffffa8,transparent 46%),rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.92);box-shadow:var(--glass-shadow);border-radius:18px}.stat:first-child{background-color:#564ff0;background-image:var(--purple-gradient);border-color:transparent;box-shadow:var(--purple-glow),inset 0 1px 0 #ffffff6b}.stat-title{opacity:.85}.stat .foot{opacity:.8}.stat span.unit{opacity:.8}.panelhead{border-color:rgba(20,26,46,.07)}.panelhead h2{display:flex;align-items:center;gap:8px}.panelhead h2:before{content:'';width:4px;height:15px;border-radius:4px;background:var(--purple-gradient);box-shadow:0 2px 6px #5b5bf64d}.panelhead p{color:#6c7890}.badge{background:#e8f4ed;color:#0f6a45;border-radius:7px;font-weight:600;box-shadow:inset 0 1px 0 #ffffff99}.badge.orange{background:#fff0e0;color:#96440a}.badge.red{background:#fce8ef;color:#ad244a}.step{color:#6c7890}.step b{color:#36445e}.step em{background:#ecebfe;color:#5145bf;box-shadow:0 5px 14px -10px #5148c6,inset 0 1px 0 #ffffff}.arrow{color:#a2a9c5}
.quick button{background:rgba(255,255,255,.78);border-color:#e5e3fa;color:#4038a0;box-shadow:0 8px 20px -16px #303366;border-radius:12px}.quick button span{color:#68748c}.quick button:hover{background:#ecebfe;box-shadow:0 8px 18px -13px #5b5bf68c}th{background:#ebedf9;color:#596680}td{border-color:#e8eaf3}tbody tr:hover{background:#5b5bf609}.summary{background:rgba(236,235,254,.8);border:1px solid #ffffffdc;border-radius:14px;box-shadow:var(--glass-shadow);color:#46536b}.filters{border-color:#e4e7f0}.filters input,.filters select{background:#ffffffc9}.link{background:none!important;box-shadow:none!important;color:#5145bf}.empty{color:#69758e}.empty b{color:#a4a8cb}.pagefoot{color:#75809a}.pendingcard{border-color:#e4e7f0}.pendingcard p{color:#68748c}.error{color:#b4264d}
.loginart{background:linear-gradient(145deg,#5b5bf6,#4348c5);box-shadow:15px 0 50px -35px #4c44c7}.loginart p{color:#e0dffe}.loginart .logo{background:#ffffff24;border:1px solid #ffffff48;box-shadow:0 5px 20px #302c892e}.loginform{background:#ffffff40}.loginbox>p{color:#65728a}.loginbox .switch{color:#4f45b7}.note{color:#68748c}dialog{background:linear-gradient(145deg,#fffffff5,#f3f3fdfa);border:1px solid white;border-radius:20px;box-shadow:0 30px 64px -28px #1c224880}dialog::backdrop{background:#20234473;backdrop-filter:blur(6px)}#toast{background:#353065;box-shadow:0 10px 30px #3c347330}
@media(max-width:700px){.sidebar{background:#f3f2fcf2;box-shadow:0 -5px 20px -15px #3b346b;backdrop-filter:blur(18px)}.nav button{border-radius:11px}.nav button.active{box-shadow:0 7px 17px -10px #5b5bf6c9,inset 0 1px 0 #ffffff6b}.panel,.stat{border-radius:15px}.topbar{background:#eef0fbdc}.loginart{box-shadow:0 14px 30px -25px #4a42bd}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
