:root{--navy:#0b2447;--navy2:#123b69;--blue:#1d6fdc;--cyan:#21a7c7;--ink:#16263d;--muted:#6c7c91;--line:#dce6ef;--bg:#f4f7fb;--panel:#fff;--green:#12a777;--amber:#f59e0b;--red:#e55454;--shadow:0 14px 34px rgba(30,62,98,.09);--radius:15px;font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{font-size:13px;letter-spacing:.14em;color:#5d7692;text-transform:uppercase;margin:0 0 12px}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;background:#eef5fb}.login-brand{padding:9vh 8vw;display:flex;flex-direction:column;justify-content:space-between;color:#fff;background:radial-gradient(circle at 28% 20%,rgba(42,171,199,.55),transparent 30%),linear-gradient(145deg,#071e3a,#0d3865 58%,#146f91);position:relative;overflow:hidden}.login-brand:after{content:"";position:absolute;width:540px;height:540px;border:1px solid rgba(255,255,255,.12);border-radius:50%;right:-190px;bottom:-250px;box-shadow:0 0 0 58px rgba(255,255,255,.035),0 0 0 116px rgba(255,255,255,.02)}.brand-mark{width:58px;height:58px;border-radius:16px;background:linear-gradient(135deg,#51d7e9,#2387ef);display:grid;place-items:center;font-weight:900;letter-spacing:.06em;color:#fff;box-shadow:0 10px 30px rgba(27,177,220,.3)}.login-brand h1{font-size:clamp(36px,4vw,64px);line-height:1.15;letter-spacing:-.04em;margin:24px 0;max-width:700px}.login-brand .eyebrow{color:#a8d8eb}.login-intro{font-size:18px;line-height:1.8;max-width:680px;color:#cfe1ef}.login-points{display:flex;gap:12px;flex-wrap:wrap;margin-top:38px}.login-points span{padding:10px 15px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);border-radius:999px;color:#e7f4fa;font-size:14px}.login-card{display:grid;place-items:center;padding:48px}.login-card-inner{width:min(440px,100%);background:#fff;padding:50px;border-radius:24px;box-shadow:0 30px 80px rgba(23,58,93,.13)}.login-card h2{margin:0 0 8px;font-size:27px}.login-card form{display:grid;gap:18px;margin-top:34px}.login-card label{font-size:14px;color:#40556e;display:grid;gap:8px}.login-card input{height:48px;border:1px solid var(--line);border-radius:10px;padding:0 14px;outline:none;background:#fbfdff}.login-card input:focus{border-color:#3f8ee9;box-shadow:0 0 0 3px rgba(63,142,233,.12)}.primary{border:0;border-radius:9px;background:linear-gradient(135deg,#1d6fdc,#178cb7);color:#fff;font-weight:700;padding:11px 18px;box-shadow:0 7px 18px rgba(29,111,220,.2)}.primary:hover{filter:brightness(1.04)}.wide{width:100%;height:50px}.form-error{min-height:24px;color:var(--red);font-size:14px;margin-top:12px}.demo-tip{font-size:13px;color:#78889c;text-align:center;margin:10px 0 0}.mobile-brand{display:none}.app-shell{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,#09233f,#0b3155);color:#d7e7f4;padding:20px 14px;position:fixed;left:0;top:0;bottom:0;width:246px;z-index:20;display:flex;flex-direction:column}.brand{height:68px;display:flex;align-items:center;gap:12px;padding:0 10px 15px;border-bottom:1px solid rgba(255,255,255,.09)}.brand-mark.small{width:42px;height:42px;border-radius:12px;font-size:14px}.brand strong{display:block;color:#fff;font-size:18px}.brand small{display:block;font-size:11px;color:#8fb0c8;margin-top:3px}.sidebar nav{display:flex;flex-direction:column;gap:4px;margin-top:16px;overflow-y:auto}.sidebar nav p{font-size:11px;color:#6f94b0;letter-spacing:.14em;margin:17px 13px 5px}.sidebar nav button{border:0;background:transparent;color:#b9cee0;text-align:left;padding:11px 13px;border-radius:9px;display:flex;gap:12px;align-items:center;font-size:14px}.sidebar nav button i{width:20px;font-style:normal;text-align:center;color:#73b7d4}.sidebar nav button:hover,.sidebar nav button.active{background:linear-gradient(90deg,rgba(50,149,211,.25),rgba(50,149,211,.08));color:#fff}.sidebar nav button.active{box-shadow:inset 3px 0 #34c1db}.sidebar-foot{margin-top:auto;padding:15px 12px 3px;font-size:12px;color:#7ea2bb;border-top:1px solid rgba(255,255,255,.08)}.live-dot{display:inline-block;width:7px;height:7px;background:#4bd59f;border-radius:50%;margin-right:8px;box-shadow:0 0 0 4px rgba(75,213,159,.1)}main{grid-column:2;min-width:0}.topbar{height:78px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;position:sticky;top:0;z-index:10}.topbar>div:first-of-type{flex:1}.topbar p{font-size:12px;color:#7f8fa2;margin:0 0 3px}.topbar h2{font-size:20px;margin:0}.top-actions{display:flex;align-items:center;gap:13px}.icon-button{width:38px;height:38px;border:1px solid var(--line);border-radius:9px;background:#fff;color:#456078}.user-chip{display:flex;align-items:center;gap:9px;margin-left:8px}.user-chip>span{width:36px;height:36px;border-radius:10px;background:#e8f1fc;color:#1d6fdc;display:grid;place-items:center;font-weight:800}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:13px}.user-chip small{font-size:11px;color:#8190a3;margin-top:2px}.demo-banner{margin:18px 28px 0;padding:10px 14px;border:1px solid #bce7df;background:#effbf8;color:#34766b;border-radius:9px;font-size:13px}.content{padding:22px 28px 40px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.kpi{background:var(--panel);border:1px solid #e4ebf2;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-38px;top:-42px;background:var(--glow,#e7f1fb)}.kpi .label{font-size:13px;color:var(--muted)}.kpi .value{font-size:30px;font-weight:800;margin:13px 0 8px;letter-spacing:-.03em}.kpi .trend{font-size:12px;color:var(--green)}.dashboard-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:18px;margin-top:18px}.panel{background:#fff;border:1px solid #e4ebf2;border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.panel-head h3{font-size:16px;margin:0}.panel-head span,.panel-head button{font-size:12px}.text-button{border:0;background:transparent;color:var(--blue)}.funnel{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;align-items:end;height:224px;padding-top:14px}.funnel-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:8px}.funnel-item .bar{width:72%;height:var(--h);min-height:20px;border-radius:9px 9px 3px 3px;background:linear-gradient(180deg,var(--c),color-mix(in srgb,var(--c),#082542 18%));box-shadow:0 8px 18px color-mix(in srgb,var(--c),transparent 72%)}.funnel-item b{font-size:17px}.funnel-item small{font-size:12px;color:var(--muted)}.task-list{display:grid;gap:10px}.task{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:11px;border:1px solid #e7edf3;border-radius:10px;background:#fbfdff}.task .date{width:38px;height:38px;border-radius:9px;background:#eaf2fc;color:#286cae;display:grid;place-items:center;font-weight:800;font-size:13px}.task b{display:block;font-size:13px}.task small{display:block;color:var(--muted);margin-top:3px}.tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:11px;background:#eef4fa;color:#4b6680}.tag.red{background:#fff0f0;color:#c74242}.tag.green{background:#eaf9f3;color:#16815e}.tag.amber{background:#fff6e6;color:#a86b09}.table-wrap{overflow:auto;border:1px solid #e2eaf1;border-radius:11px}table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}th{background:#f5f8fb;color:#61748b;font-weight:600;text-align:left;padding:12px;border-bottom:1px solid var(--line)}td{padding:13px 12px;border-bottom:1px solid #edf1f5}tr:last-child td{border-bottom:0}tbody tr:hover{background:#f8fbfe}.amount{font-variant-numeric:tabular-nums;font-weight:700}.progress{height:7px;background:#e9eff5;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;background:linear-gradient(90deg,#1d6fdc,#22b2c4);border-radius:inherit}.list-page .page-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:16px}.page-head h3{margin:0;font-size:18px}.page-head p{margin:5px 0 0;color:var(--muted);font-size:13px}.filters{display:flex;gap:10px;align-items:center;margin-bottom:14px}.filters input,.filters select{height:39px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px;outline:none}.filters input{min-width:260px}.secondary{border:1px solid var(--line);background:#fff;color:#405870;border-radius:8px;padding:9px 14px}.danger{border:1px solid #f2b8b8;background:#fff5f5;color:#c74444;border-radius:8px;padding:9px 14px}.empty{padding:54px;text-align:center;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;background:rgba(4,19,35,.46);display:grid;place-items:center;z-index:100;padding:20px}.modal{background:#fff;border-radius:18px;width:min(720px,96vw);max-height:90vh;overflow:auto;box-shadow:0 32px 80px rgba(0,0,0,.24)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--line)}.modal-head h3{margin:0}.modal-body{padding:22px 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid label{display:grid;gap:7px;color:#566b81;font-size:13px}.form-grid label.full{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea{border:1px solid var(--line);border-radius:8px;padding:10px 11px;outline:none;background:#fff}.form-grid textarea{min-height:90px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--line)}.toast-root{position:fixed;right:24px;bottom:24px;z-index:200;display:grid;gap:10px}.toast{background:#102d49;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);font-size:13px;animation:slide .2s ease}.toast.error{background:#a63232}@keyframes slide{from{transform:translateY(8px);opacity:0}}#menu-toggle{display:none}.section-placeholder{padding:50px;text-align:center;background:#fff;border:1px dashed #cad7e3;border-radius:16px;color:var(--muted)}
.cell-wrap{display:block;white-space:normal;min-width:220px;max-width:360px;line-height:1.55}.row-actions{display:flex;gap:5px;align-items:center}.row-actions .text-button{padding:4px 5px;white-space:nowrap}.danger-link{color:#c44747!important}.notice{padding:12px 14px;background:#eef7ff;border:1px solid #cce2f7;border-radius:9px;color:#42647f;font-size:13px;line-height:1.7;margin-bottom:18px}.modal-wide{width:min(930px,96vw)}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-grid>div{padding:12px;background:#f7fafc;border:1px solid #e5ecf2;border-radius:9px}.detail-grid span,.system-meta span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.detail-grid b{font-size:14px}.detail-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.detail-stats>div{padding:16px;text-align:center;border:1px solid var(--line);border-radius:10px}.detail-stats b,.detail-stats span{display:block}.detail-stats b{font-size:24px;color:var(--blue)}.detail-stats span{font-size:12px;color:var(--muted);margin-top:3px}.timeline{display:grid;gap:0}.timeline>div{position:relative;padding:0 0 20px 25px;border-left:1px solid #d7e3ed;margin-left:6px}.timeline i{position:absolute;left:-6px;top:3px;width:11px;height:11px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 4px #e9f7fa}.timeline b{font-size:13px}.timeline p{font-size:13px;line-height:1.7;margin:6px 0;color:#3e5268}.timeline small{color:var(--muted)}.analytics-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.analytics-head h3{margin:0;font-size:21px}.analysis-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.bar-chart{display:grid;gap:14px}.bar-chart>div{display:grid;grid-template-columns:105px 1fr 100px;gap:10px;align-items:center;font-size:12px}.bar-chart>div>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-chart>div>div{height:10px;border-radius:999px;background:#edf2f6;overflow:hidden}.bar-chart i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1d6fdc,#25b3bf)}.bar-chart b{text-align:right;font-size:12px}.settings-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:18px}.full-panel{grid-column:1/-1}.setting-actions{display:flex;gap:10px;margin-bottom:18px}.system-meta{display:grid;gap:10px}.system-meta>div{padding:12px 0;border-bottom:1px solid #edf1f5}.system-meta>div:last-child{border-bottom:0}.system-meta b{font-size:13px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.quick-grid button{border:1px solid var(--line);background:#f9fbfd;text-align:left;padding:18px;border-radius:11px;color:var(--ink)}.quick-grid button:hover{border-color:#7fb3e3;background:#f1f7fd}.quick-grid b,.quick-grid span{display:block}.quick-grid b{font-size:16px;color:var(--blue)}.quick-grid span{margin-top:6px;color:var(--muted);font-size:12px}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.analysis-grid,.settings-grid{grid-template-columns:1fr}.full-panel{grid-column:auto}.top-actions .user-chip div{display:none}}
@media(max-width:760px){.login-wrap{display:block}.login-brand{display:none}.login-card{min-height:100vh;padding:20px}.login-card-inner{padding:32px 24px}.mobile-brand{display:flex;align-items:center;gap:12px;margin-bottom:30px}.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s}.app-shell.menu-open .sidebar{transform:none}.app-shell main{margin:0}.topbar{padding:0 14px;height:70px}.topbar h2{font-size:17px}.top-actions .primary{font-size:0;width:38px;height:38px;padding:0}.top-actions .primary:after{content:"+";font-size:22px}.top-actions .user-chip{display:none}#menu-toggle{display:block;margin-right:12px}.demo-banner{margin:12px 14px 0}.content{padding:16px 14px 30px}.kpi-grid{grid-template-columns:1fr 1fr;gap:10px}.kpi{padding:15px}.kpi .value{font-size:24px}.filters{flex-wrap:wrap}.filters input{min-width:100%;width:100%}.form-grid,.detail-grid,.quick-grid{grid-template-columns:1fr}.form-grid label.full{grid-column:auto}.modal{max-height:94vh}.funnel{overflow-x:auto}.funnel-item{min-width:90px}.funnel-item .bar{width:55%}.detail-stats{grid-template-columns:1fr 1fr}.analytics-head{align-items:start;gap:12px}.bar-chart>div{grid-template-columns:82px 1fr 74px}.settings-grid{display:block}.settings-grid>.panel{margin-bottom:14px}}
