*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif}body{background:#f5f6f8}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f6e56,#1d9e75 55%,#5dcaa5);padding:24px}.login-card{width:100%;max-width:420px;background:#fff;border-radius:16px;padding:40px 36px 32px;box-shadow:0 18px 48px #0000002e}.login-brand{text-align:center;margin-bottom:28px}.login-brand h1{font-size:24px;font-weight:600;color:#0f6e56;margin:12px 0 6px;letter-spacing:1px}.login-brand p{color:#8c8c8c;font-size:13px;margin:0}.login-logo{width:56px;height:56px;border-radius:14px;background:linear-gradient(135deg,#0f6e56,#1d9e75);color:#fff;font-size:24px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;letter-spacing:0}.login-divider{display:flex;align-items:center;gap:12px;color:#bfbfbf;font-size:12px;margin:20px 0 16px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:#f0f0f0}.app-layout{min-height:100vh}.app-header{background:#fff;padding:0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f0f0f0;height:56px;position:sticky;top:0;z-index:20}.app-header-brand{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:#0f6e56}.app-header-brand .logo-mini{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#0f6e56,#1d9e75);color:#fff;font-size:14px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.app-sider{background:#fff!important;border-right:1px solid #f0f0f0}.app-content{padding:20px;background:#f5f6f8;min-height:calc(100vh - 56px)}.page-card{background:#fff;border-radius:10px;padding:20px}.page-title{font-size:17px;font-weight:600;color:#262626;margin:0 0 4px}.page-desc{font-size:13px;color:#8c8c8c;margin:0 0 18px}.dash-group{margin-bottom:26px}.dash-group:last-child{margin-bottom:0}.dash-group-head{display:flex;align-items:center;gap:8px;margin:0 2px 12px}.dash-group-icon{color:#0f6e56;font-size:15px}.dash-group-name{font-size:15px;font-weight:600;color:#262626;letter-spacing:.2px}.dash-group-count{margin-inline-end:0;background:#e1f5ee;color:#0f6e56;font-size:12px;line-height:18px;padding-inline:8px;border-radius:9px}.dash-group-line{flex:1;height:1px;background:linear-gradient(90deg,#eceff1,#eceff100)}.m-group{margin-bottom:18px}.m-group-head{display:flex;align-items:center;gap:7px;margin:0 4px 10px}.m-group-icon{color:#0f6e56;font-size:13px}.m-group-name{font-size:13px;font-weight:600;color:#434343}.m-group-count{font-size:12px;color:#0f6e56;background:#e1f5ee;border-radius:8px;padding:1px 7px;line-height:16px}.report-frame{width:100%;border:none;border-radius:10px;background:#fff;min-height:calc(100vh - 140px)}.stat-card{background:#fff;border-radius:10px;padding:18px 20px;border:1px solid #f0f0f0}.stat-card .stat-label{font-size:13px;color:#8c8c8c}.stat-card .stat-value{font-size:26px;font-weight:600;color:#262626;margin-top:6px}.upload-zone{border:2px dashed #d9d9d9;border-radius:12px;padding:36px 20px;text-align:center;background:#fafafa;transition:all .2s;cursor:pointer}.upload-zone:hover{border-color:#1d9e75;background:#f2fbf7}.install-notice{background:#f6ffed;border:1px solid #b7eb8f;border-radius:8px;padding:14px 16px;font-size:13px;color:#389e0d;line-height:1.7}.dingtalk-icon{width:18px;height:18px;vertical-align:-3px;margin-right:6px}.dd-splash{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f6e56,#1d9e75 55%,#5dcaa5);z-index:2000;animation:ddFadeIn .35s ease both}.dd-splash-inner{text-align:center;color:#fff;padding:0 24px}.dd-splash-logo-wrap{position:relative;width:96px;height:96px;margin:0 auto 28px;display:flex;align-items:center;justify-content:center}.dd-splash-ring{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;border:2px solid rgba(255,255,255,.55);border-top-color:transparent;border-right-color:transparent;animation:ddSpin 1.1s linear infinite}.dd-splash-ring2{top:-16px;right:-16px;bottom:-16px;left:-16px;border-color:#ffffff38;border-top-color:transparent;border-left-color:transparent;animation:ddSpin 1.7s linear infinite reverse}.dd-splash-logo{width:72px;height:72px;border-radius:20px;background:#ffffff29;border:1px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;letter-spacing:2px;animation:ddPulse 1.8s ease-in-out infinite}.dd-splash-title{font-size:17px;font-weight:600;letter-spacing:.5px}.dd-splash-sub{font-size:13px;opacity:.85;margin-top:8px;min-height:18px}.dd-splash-bar{width:180px;height:4px;border-radius:4px;background:#ffffff40;margin:22px auto 0;overflow:hidden}.dd-splash-bar>span{display:block;width:40%;height:100%;border-radius:4px;background:#fff;animation:ddSlide 1.2s ease-in-out infinite}.dd-splash-hint{font-size:12px;opacity:.7;margin-top:16px}@keyframes ddSpin{to{transform:rotate(360deg)}}@keyframes ddPulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes ddFadeIn{0%{opacity:0}to{opacity:1}}@keyframes ddSlide{0%{transform:translate(-120%)}to{transform:translate(320%)}}.login-page{animation:ddFadeIn .3s ease both}@media (max-width: 768px){.app-sider{display:none!important}.app-content{padding:12px;min-height:calc(100vh - 56px)}}
