﻿*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.6;min-height:100vh}img{image-orientation:from-image}.login-page{align-items:center;background:linear-gradient(135deg,#0d1b2a,#15294a 25%,#1a3a5c 50%,#152e4f 75%,#0d1b2a);display:flex;justify-content:center;min-height:100vh;overflow:hidden;padding:20px;position:relative}.login-tech-svg{height:100%;inset:0;pointer-events:none;position:absolute;width:100%;z-index:0}.login-tech-svg path{fill:none;stroke-linecap:round}.login-tech-svg circle{transition:opacity .3s}.login-tech-grid{background-image:linear-gradient(rgba(96,165,250,.07) 1px,transparent 0),linear-gradient(90deg,rgba(96,165,250,.07) 1px,transparent 0);background-size:40px 40px;mask-image:radial-gradient(ellipse at center,#000 20%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse at center,#000 20%,transparent 80%)}.login-hex-grid,.login-tech-grid{inset:0;pointer-events:none;position:absolute}.login-hex-grid{opacity:.5;z-index:0}.login-glow-1{background:radial-gradient(circle,rgba(59,130,246,.22) 0,transparent 60%);height:700px;left:-10%;top:-20%;width:700px}.login-glow-1,.login-glow-2{border-radius:50%;filter:blur(20px);pointer-events:none;position:absolute}.login-glow-2{background:radial-gradient(circle,rgba(37,99,235,.18) 0,transparent 60%);bottom:-25%;height:800px;right:-12%;width:800px}.login-glow-3{background:radial-gradient(circle,rgba(96,165,250,.12) 0,transparent 60%);filter:blur(15px);height:400px;right:5%;top:40%;width:400px}.login-glow-3,.login-particle{border-radius:50%;pointer-events:none;position:absolute}.login-particle{animation:loginFloat 8s ease-in-out infinite;background:#60a5fa;z-index:0}@keyframes loginFloat{0%,to{opacity:.3;transform:translateY(0) translateX(0)}50%{opacity:.8;transform:translateY(-30px) translateX(15px)}}@keyframes loginPulse{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.6;transform:scale(1.05)}}@keyframes loginDash{to{stroke-dashoffset:-40}}@keyframes loginSpin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes loginSpinRev{0%{transform:rotate(1turn)}to{transform:rotate(0deg)}}.login-radar{border:1px solid rgba(96,165,250,.15);border-radius:50%;pointer-events:none;position:absolute;z-index:0}.login-radar.r1{animation:loginPulse 4s ease-in-out infinite}.login-radar.r1,.login-radar.r2{height:200px;right:8%;top:10%;width:200px}.login-radar.r2:before{border:1px solid rgba(96,165,250,.1);border-radius:50%;content:"";inset:30px;position:absolute}.login-radar.r2:after{border:1px solid rgba(96,165,250,.08);border-radius:50%;content:"";inset:60px;position:absolute}.login-radar-sweep{animation:loginSpin 10s linear infinite;height:200px;pointer-events:none;position:absolute;right:8%;top:10%;width:200px;z-index:0}.login-radar-sweep:before{background:linear-gradient(90deg,rgba(96,165,250,.4),transparent);content:"";height:1px;left:50%;position:absolute;top:50%;transform-origin:left center;width:50%}.login-circuit{opacity:.4;pointer-events:none;position:absolute;z-index:0}.login-wrap{background:#fff;border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.35),0 8px 24px rgba(0,0,0,.15);max-width:820px;min-height:460px;width:100%;z-index:1}.login-wrap,.login-wrap-left{display:flex;overflow:hidden;position:relative}.login-wrap-left{background:linear-gradient(160deg,#1e3a8a,#2563eb 35%,#3b82f6 65%,#1d4ed8);flex:1;flex-direction:column;justify-content:center;padding:44px 36px}.login-wrap-left:before{background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);border-radius:46% 54% 50% 50%/54% 46% 54% 46%;height:300px;right:-20%;top:-30%;width:300px}.login-wrap-left:after,.login-wrap-left:before{content:"";pointer-events:none;position:absolute}.login-wrap-left:after{background:radial-gradient(circle,rgba(96,165,250,.12) 0,transparent 70%);border-radius:54% 46% 46% 54%/46% 54% 46% 54%;bottom:-20%;height:250px;left:-15%;width:250px}.login-wbrand{position:relative;text-align:center;z-index:1}.login-wlogo{filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));height:64px;margin-bottom:20px;width:64px}.login-wtitle{color:#fff;font-size:26px;font-weight:700;letter-spacing:1px;line-height:1.4;margin-bottom:8px}.login-wsub{color:rgba(191,219,254,.85);font-size:14px;letter-spacing:.5px;margin-bottom:32px}.login-wfeatures{flex-direction:column;gap:16px}.login-wfeat,.login-wfeatures{align-items:center;display:flex}.login-wfeat{color:rgba(219,234,254,.95);font-size:14px;gap:12px}.login-wfeat-icon{align-items:center;backdrop-filter:blur(4px);border-radius:8px;font-size:18px;height:36px;width:36px}.login-wfeat-icon,.login-wrap-right{display:flex;flex-shrink:0;justify-content:center}.login-wrap-right{background:#fff;flex-direction:column;padding:44px 40px;width:380px}.login-wrap-right h2{color:#1e3a8a;font-size:20px;font-weight:700;margin-bottom:4px;text-align:center}.login-wrap-right .login-desc{color:#94a3b8;font-size:13px;margin-bottom:24px;text-align:center}.login-wrap-right .form-group{margin-bottom:14px}.login-wrap-right .form-group label{color:#334155;display:block;font-size:13px;font-weight:600;margin-bottom:6px}.login-wrap-right .login-input-wrap{position:relative}.login-wrap-right .input-icon{color:#94a3b8;font-size:16px;left:14px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:color .2s;z-index:1}.login-wrap-right .login-input-wrap:focus-within .input-icon{color:#2563eb}.login-wrap-right .form-input{background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;font-size:14px;padding:11px 14px 11px 42px;transition:all .2s;width:100%}.login-wrap-right .form-input:focus{background:#fff;border-color:#2563eb;box-shadow:0 0 0 4px rgba(37,99,235,.1);outline:none}.login-wrap-right .form-input::placeholder{color:#cbd5e1}.login-wrap-right .login-options{align-items:center;display:flex;justify-content:flex-end;margin-bottom:16px}.login-wrap-right .login-remember{align-items:center;color:#64748b;cursor:pointer;display:flex;font-size:13px;gap:6px}.login-wrap-right .login-remember input{accent-color:#2563eb;cursor:pointer;height:15px;width:15px}.login-wrap-right .btn{background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:10px;box-shadow:0 4px 14px rgba(37,99,235,.35);color:#fff;cursor:pointer;font-size:15px;font-weight:600;letter-spacing:4px;margin-top:2px;padding:12px;transition:all .25s;width:100%}.login-wrap-right .btn:hover{box-shadow:0 8px 24px rgba(37,99,235,.45);transform:translateY(-2px)}.login-wrap-right .btn:active{transform:translateY(0)}.login-wrap-right .btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.login-wrap-right .login-footer{color:#94a3b8;font-size:12px;line-height:1.8;margin-top:16px;text-align:center}@media(max-width:760px){.login-wrap{flex-direction:column;max-width:400px;min-height:auto}.login-wrap-left{padding:32px 28px 24px}.login-wrap-right{padding:32px 28px;width:100%}.login-wfeatures{display:none}}.form-group{margin-bottom:16px}.form-group label{color:#666;display:block;font-size:13px;font-weight:500;margin-bottom:6px}.form-input{border:1px solid #ddd;border-radius:8px;font-size:14px;padding:10px 14px;transition:border .2s;width:100%}.form-input:focus{border-color:#4a6cf7;box-shadow:0 0 0 3px rgba(74,108,247,.12);outline:none}.btn{align-items:center;background:linear-gradient(135deg,#4a6cf7,#6a5acd);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;justify-content:center;margin-top:8px;padding:11px 20px;transition:all .2s;width:100%}.btn:hover{opacity:.9;transform:translateY(-1px)}.btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.btn-sm{border:none;border-radius:7px;cursor:pointer;font-size:13px;font-weight:500;padding:7px 18px;transition:all .15s}.btn-sm.primary{background:#5b6bf5;color:#fff}.btn-sm.success{background:#10b981;color:#fff}.btn-sm.warning{background:#f59e0b;color:#fff}.btn-sm.danger{background:#ef4444;color:#fff}.btn-sm.default{background:#e5e7eb;color:#333}.btn-sm.batch{background:#0ea5e9;color:#fff}.btn-sm:hover{opacity:.85}.btn-sm:disabled{cursor:not-allowed;opacity:.45;transform:none}.btn:active:not(:disabled){box-shadow:inset 0 2px 4px rgba(0,0,0,.18);filter:brightness(.9);transform:translateY(1px) scale(.98)}.btn-sm:active:not(:disabled){box-shadow:inset 0 1px 3px rgba(0,0,0,.15);filter:brightness(.9);transform:scale(.94)}.ms-pagin-btns button:active:not(:disabled){filter:brightness(.92);transform:scale(.93)}#followupModal .btn-followup-add:active{filter:brightness(.9);transform:scale(.95)!important}#followupBody .btn-del:active,#followupBody .btn-edit:active{filter:brightness(.9);transform:scale(.93)!important}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{background:#1b3e6e;color:#fff;display:flex;flex-direction:column;flex-shrink:0;padding:0;width:180px}.sidebar .logo{align-items:center;display:flex;gap:8px;justify-content:center;padding:12px 14px}.sidebar .logo .sb-logo{border-radius:6px;flex-shrink:0;height:28px;object-fit:contain;width:28px}.sidebar .logo h3{color:#fff;font-size:14px;font-weight:600;line-height:1.35;text-align:center;white-space:nowrap}.sidebar .logo p{color:hsla(0,0%,100%,.8);font-size:11px;margin-top:2px}.sidebar nav{flex:1;padding:8px 0}.sidebar nav a{align-items:center;color:#fff;cursor:pointer;display:flex;font-size:15px;gap:8px;padding:10px 14px;text-decoration:none;transition:all .2s}.sidebar nav a:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar nav a.active{background:rgba(91,107,245,.35);border-right:3px solid #fff;color:#fff}.sidebar nav a:focus{outline:none}.nav-parent,.nav-parent>a{position:relative}.nav-parent>a:after{content:"▾";font-size:14px;margin-left:auto;transition:transform .2s}.nav-parent.open>a:after{transform:rotate(0)}.nav-parent:not(.open)>a:after{transform:rotate(-90deg)}.nav-parent.has-active>a{color:#fff}.nav-parent.has-active>a:before{background:#5b6bf5;border-radius:0 2px 2px 0;bottom:0;content:"";left:0;position:absolute;top:0;width:3px}.sub-nav{background:transparent;max-height:0;overflow:hidden;transition:max-height .25s ease}.nav-parent.open .sub-nav{max-height:400px}.sub-nav a{border-right:none!important;color:hsla(0,0%,100%,.85)!important;font-size:14px!important;padding:8px 14px 8px 40px!important}.sub-nav a:hover{background:hsla(0,0%,100%,.08)!important;color:#fff!important}.sub-nav a.active{background:rgba(91,107,245,.35)!important;color:#fff!important}.stu-count{color:#fff;font-size:12px;margin-left:6px}.side-refresh{border-top:1px solid hsla(0,0%,100%,.15);padding:10px 12px}.side-refresh-btn{background:#10b981;width:100%}.side-refresh-btn:hover{opacity:.85}.sidebar .s-bottom{border-top:1px solid hsla(0,0%,100%,.2);padding:12px 14px}.sidebar .s-bottom a{color:hsla(0,0%,100%,.85);cursor:pointer;font-size:15px;text-decoration:none}.sidebar .s-bottom a:hover{color:#fff}.main-area{display:flex;flex:1;flex-direction:column;min-width:0}.top-bar{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:12px;height:42px;justify-content:space-between;padding:0 24px}.top-bar .tab-bar{background:transparent;border-bottom:none;flex:1;gap:6px;height:100%;padding:0}.top-bar .user-info{align-items:center;color:#666;display:flex;flex-shrink:0;font-size:13px;gap:12px}.top-clock{background:#f3f6ff;border:1px solid #dbe3ff;border-radius:16px;color:#1f2937;padding:4px 10px}.top-clock,.welcome-text{white-space:nowrap}.tab-bar{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:3px;height:26px;overflow-x:auto;overflow-y:hidden;padding:0 12px;scrollbar-width:thin}.tab-bar::-webkit-scrollbar{height:3px}.tab-bar::-webkit-scrollbar-track{background:transparent}.tab-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:2px}.tab-item{align-items:center;border:1px solid transparent;border-radius:6px;display:inline-flex;flex-shrink:0;gap:5px;padding:2px 10px;transition:all .15s;white-space:nowrap}.tab-item:hover{background:#e8eaf1;color:#333}.tab-item.active{background:#5b6bf5;border-color:#4a5be0}.tab-item .tab-close{align-items:center;border-radius:50%;display:inline-flex;font-size:12px;height:14px;justify-content:center;line-height:1;opacity:.55;transition:all .15s;width:14px}.tab-item .tab-close:hover{background:rgba(0,0,0,.1);opacity:1}.tab-item.active .tab-close:hover{background:hsla(0,0%,100%,.3)}.page-container{display:none;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:hidden}.page-container.active{display:flex}.content,.page-container .content{flex:1;overflow-x:hidden;overflow-y:auto;padding:0 16px}.card,.content,.page-container .content{display:flex;flex-direction:column;min-height:0;min-width:0}.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06);flex:1;margin-bottom:0;overflow:hidden;padding:0}.card-header{align-items:center;display:flex;flex-shrink:0;justify-content:space-between;margin-bottom:0;padding:12px 16px}.card-header h3{color:#1a1a2e;font-size:16px;font-weight:600}.stats-grid{display:grid;flex-shrink:0;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:24px}.stat-card{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.06);gap:16px;padding:20px}.stat-card,.stat-card .icon{align-items:center;border-radius:12px;display:flex}.stat-card .icon{font-size:22px;height:48px;justify-content:center;width:48px}.stat-card .icon.blue{background:#eef2ff;color:#4a6cf7}.stat-card .icon.green{background:#ecfdf5;color:#10b981}.stat-card .icon.orange{background:#fff7ed;color:#f59e0b}.stat-card .icon.red{background:#fef2f2;color:#ef4444}.stat-card .icon.purple{background:#f5f3ff;color:#8b5cf6}.stat-card .info h4{color:#1a1a2e;font-size:24px;font-weight:700}.stat-card .info p{color:#999;font-size:13px;margin-top:2px}.search-bar{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;flex-wrap:wrap;gap:10px;margin:0;padding:12px 16px}.search-bar input,.search-bar select{border:1px solid #ddd;border-radius:8px;font-size:13px;padding:8px 12px}.search-row{align-items:center;display:flex;flex-wrap:wrap;gap:2px 10px;width:100%}.search-bar input{flex:1;max-width:300px;min-width:200px}.el-table .row-status-untrained td:not(.is-right){color:#000!important}.el-table .row-status-training td:not(.is-right){color:#52c41a!important}.el-table .row-status-ended td:not(.is-right){color:#999!important}.el-table .row-status-enabled td:not(.is-right){color:#52c41a!important}.el-table .row-status-disabled td:not(.is-right){color:#999!important}.search-bar select{cursor:pointer;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:130px}.cselect{flex-shrink:0;position:relative;width:130px}.cselect-trigger{align-items:center;background:#fff;border:1px solid #ddd;border-radius:8px;box-sizing:border-box;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;overflow:hidden;padding:8px 12px;transition:border .2s;white-space:nowrap;width:100%}.cselect-trigger:hover{border-color:#bbb}.cselect-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cselect-arrow{color:#999;flex-shrink:0;font-size:10px;margin-left:4px;transition:transform .2s}.cselect.open .cselect-arrow{transform:rotate(180deg)}.cselect-panel{background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.12);display:none;left:0;max-height:300px;max-width:500px;min-width:100%;overflow-y:auto;padding:6px 0;position:absolute;top:calc(100% + 2px);z-index:99999}.cselect.open .cselect-panel{display:block}.cselect-option{border-radius:4px;cursor:pointer;font-size:13px;margin:0 4px;padding:6px 12px;white-space:nowrap}.cselect-option:hover{background:#316ac5;color:#fff!important}.cselect-option.selected{background:#dbeafe}.cselect-option.selected:hover{background:#316ac5;color:#fff!important}.tabs{display:flex;gap:4px;margin-bottom:16px}.tab-item{background:#f3f4f6;border-radius:20px;color:#666;cursor:pointer;font-size:13px;padding:7px 16px;transition:all .2s}.tab-item.active{background:#4a6cf7;color:#fff}.tab-item:hover:not(.active){background:#e5e7eb}.table-wrapper{flex:1;min-height:0;min-width:0;overflow:hidden;padding:0;position:relative;width:100%}.enr-table{border:1px solid #e5e7eb;min-width:100%}.enr-table th{background:#f9fafb;color:#666;font-weight:600}.enr-table td,.enr-table th{border:1px solid #e5e7eb;padding:10px 12px;text-align:center;white-space:nowrap}.enr-table td{color:#333}.stu-table{border-collapse:separate;border-spacing:0}.stu-table td,.stu-table th{border:1px solid #e5e7eb;border-left:none;border-top:none}.stu-table thead th{border-top:1px solid #e5e7eb}.stu-table td:first-child,.stu-table th:first-child{border-left:1px solid #e5e7eb;left:0;position:sticky;z-index:4}.stu-table td:nth-child(2),.stu-table th:nth-child(2){left:50px;position:sticky;z-index:4}.stu-table td:nth-child(3),.stu-table th:nth-child(3){left:100px;position:sticky;z-index:4}.stu-table td:last-child,.stu-table th:last-child{position:sticky;right:0;z-index:4}.stu-table thead th{background:#f9fafb}.stu-table td:first-child,.stu-table td:last-child,.stu-table td:nth-child(2),.stu-table td:nth-child(3){background:#fff}.stu-table tbody tr:hover td:first-child,.stu-table tbody tr:hover td:last-child,.stu-table tbody tr:hover td:nth-child(2),.stu-table tbody tr:hover td:nth-child(3){background:#f0f5ff}.stu-table td:nth-child(3){box-shadow:2px 0 4px rgba(0,0,0,.08)}.stu-table td:last-child{box-shadow:-2px 0 4px rgba(0,0,0,.08)}.stu-name{color:#1890ff;cursor:pointer;font-weight:500}.stu-name:hover{text-decoration:underline}#classPagin,#stuPagin{padding:12px 16px}.main-scroll{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:hidden}.pagin-footer{background:#fff;border-top:1px solid #e5e7eb;bottom:0;flex-shrink:0;left:0;padding:0 16px;position:sticky;z-index:5}.pagin-bar{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;padding:8px 0}.pagin-bar .pagin-info{color:#666;font-size:13px}.pagin-bar .pagin-controls{align-items:center;display:flex;flex-wrap:wrap;gap:4px}.pagin-bar .pagin-size{align-items:center;color:#666;display:flex;font-size:13px;gap:6px;margin-right:8px}.pagin-bar .pagin-size select{border:1px solid #ddd;border-radius:6px;font-size:12px;padding:4px 8px}.enr-table tr:hover td{background:#f9fafb}.el-table{font-size:13px!important}.el-table th.el-table__cell>.cell{font-size:13px;font-weight:700;overflow:hidden!important;text-overflow:clip!important;white-space:nowrap!important}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafbfc}.el-table__body tr:hover>td.el-table__cell{background:#f0f5ff!important}.el-table--border .el-table__cell{border-right:1px solid #e5e7eb!important}.el-table--border th.el-table__cell{border-bottom:1px solid #e5e7eb!important}.el-table .el-table__cell{padding:2px 0}.el-table .cell{line-height:22px;overflow:hidden!important;padding:0 6px!important;text-overflow:clip!important;white-space:nowrap!important}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto!important}.el-table th.sort-asc .cell:after{color:red;content:" ▲";font-size:11px;font-weight:700}.el-table th.sort-desc .cell:after{color:red;content:" ▼";font-size:11px;font-weight:700}.el-table th.sort-asc,.el-table th.sort-desc{cursor:pointer}.el-table .el-table__fixed-right:before,.el-table .el-table__fixed:before{display:none}.el-table--border:after,.el-table--group:after{width:0}.el-table__body-wrapper{overflow-x:auto!important}.actions{align-items:center;display:flex;flex-wrap:nowrap;gap:6px;justify-content:center}.tag{border-radius:12px;display:inline-block;font-size:11px;font-weight:500;padding:3px 10px}.tag-blue{background:#eef0fe;color:#5b6bf5}.tag-green{background:#ecfdf5;color:#10b981}.tag-orange{background:#fff7ed;color:#f59e0b}.tag-red{background:#fef2f2;color:#ef4444}.empty{color:#bbb;font-size:14px;padding:40px;text-align:center}.modal-mask{align-items:center;background:rgba(0,0,0,.45);bottom:0;display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal,.modal-mask.show{display:flex}.modal{background:#fff;border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.15);flex-direction:column;max-height:85vh;max-width:500px;overflow:hidden;width:90%}.modal.modal-lg{max-width:1380px}.modal-hd{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;flex-shrink:0;justify-content:space-between;padding:16px 24px}.modal-hd h3{color:#1a1a2e;font-size:17px;font-weight:600}.modal-close{background:none;border:none;color:#999;cursor:pointer;font-size:22px;padding:0 4px;transition:color .2s}.modal-close:hover{color:#333}.modal-bd{flex:1;overflow-y:auto;padding:24px}.modal-ft{background:#fafafa;border-top:1px solid #f0f0f0;display:flex;flex-shrink:0;gap:10px;justify-content:flex-end;padding:14px 24px}.profile-item{border-bottom:1px solid #f3f4f6;display:flex;padding:8px 0}.profile-item .lbl{color:#999;flex-shrink:0;font-size:13px;width:100px}.profile-item .val{color:#333;font-size:13px}.detail-grid{border:1px solid #e5e7eb;border-radius:8px;display:grid;gap:0;grid-template-columns:repeat(3,1fr);margin-bottom:16px;overflow:hidden}.detail-grid .dg-item{border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;display:flex;flex-direction:column;gap:2px;padding:10px 14px}.detail-grid .dg-item:nth-child(3n){border-right:none}.detail-grid .dg-item:nth-last-child(-n+3){border-bottom:none}.detail-grid .dg-lbl{color:#999;font-size:12px}.detail-grid .dg-val{color:#333;font-size:14px;font-weight:500}.detail-header{align-items:center;background:linear-gradient(135deg,#5b6bf5,#7c5cfa);border-radius:12px;box-shadow:0 4px 16px rgba(91,107,245,.2);display:flex;gap:16px;margin-bottom:20px;padding:20px 24px}.detail-header .dh-avatar{align-items:center;background:hsla(0,0%,100%,.25);border:2px solid hsla(0,0%,100%,.3);border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:24px;font-weight:700;height:56px;justify-content:center;width:56px}.detail-header .dh-info{flex:1}.detail-header .dh-name{align-items:center;color:#fff;display:flex;flex-wrap:wrap;font-size:20px;font-weight:700;gap:8px}.detail-header .dh-name .dh-gender-tag{align-items:center;background:hsla(0,0%,100%,.9);border-radius:12px;display:inline-flex;font-size:12px;font-weight:600;padding:2px 10px}.detail-header .dh-name .dh-age{color:hsla(0,0%,100%,.85);font-size:14px;font-weight:400;margin-left:4px}.detail-header .dh-meta{align-items:center;color:hsla(0,0%,100%,.85);display:flex;flex-wrap:wrap;font-size:13px;gap:6px;margin-top:6px}.detail-header .dh-badge{background:hsla(0,0%,100%,.2);border-radius:14px;color:#fff;display:inline-block;font-size:12px;font-weight:500;padding:3px 12px}.detail-section{margin-bottom:20px}.detail-section .ds-title{border-left:4px solid #5b6bf5;color:#1a1a2e;font-size:14px;font-weight:600;margin-bottom:12px;padding-left:10px}.detail-section .ds-grid{display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.detail-section .ds-item{align-items:center;background:#f7f8fa;border:1px solid #f0f1f3;border-radius:10px;display:flex;gap:4px;padding:10px 16px;transition:border-color .2s}.detail-section .ds-item:hover{border-color:#d0d4e8}.detail-section .ds-item .ds-lbl{color:#8c8c8c;flex-shrink:0;font-size:13px;white-space:nowrap}.detail-section .ds-item .ds-val{color:#262626;font-size:14px;font-weight:500}.editable-remark,.editable-status,.editable-val{cursor:text;transition:background .15s,border-color .15s}.editable-remark:hover,.editable-status:hover,.editable-val:hover{background:#eef2ff!important;box-shadow:inset 0 0 0 1px #b9c2ff}.audit-open-cell{cursor:pointer;font-weight:400}.audit-open-cell:hover{background:#eef2ff!important;box-shadow:inset 0 0 0 1px #b9c2ff}.inline-edit-input{background:#fff;min-width:120px;padding:5px 8px}.inline-edit-input,.inline-edit-textarea{border:1px solid #5b6bf5;border-radius:6px;font-size:13px;outline:none;width:100%}.inline-edit-textarea{font-family:inherit;min-height:58px;min-width:160px;padding:6px 8px;resize:vertical}.photo-grid{display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin-top:8px}.photo-grid .pg-item{text-align:center}.photo-grid .pg-item .pg-title{color:#262626;font-size:14px;font-weight:600;margin-bottom:8px}.photo-grid .pg-item .pg-frame{align-items:center;background:#f7f8fa;border:2px solid #e8e8e8;border-radius:10px;cursor:pointer;display:flex;height:200px;justify-content:center;overflow:hidden;transition:border-color .2s;width:100%}.photo-grid .pg-item .pg-frame:hover{border-color:#5b6bf5}.photo-grid .pg-item .pg-frame img{border-radius:8px;height:100%;object-fit:contain;width:100%}.photo-grid .pg-item .pg-empty{align-items:center;background:#fafafa;border:2px dashed #d9d9d9;border-radius:10px;color:#bfbfbf;display:flex;font-size:13px;height:200px;justify-content:center;width:100%}.enr-table-wrap{border:1px solid #e5e7eb;border-radius:10px;overflow-x:auto;overflow-y:hidden}.enr-table{border-collapse:collapse;font-size:13px;width:auto}.enr-table thead th{background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#4b5563;font-weight:600;padding:10px 12px;text-align:center;white-space:nowrap}.enr-table tbody td{border-bottom:1px solid #f3f4f6;color:#374151;padding:10px 12px;text-align:center}.enr-table tbody tr:last-child td{border-bottom:none}.enr-table tbody tr:hover td{background:#f9fafb}.modal.modal-audit{max-width:1120px}.audit-section{margin-bottom:18px}.audit-section .ds-grid{display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.audit-section .ds-item{align-items:center;background:#f7f8fa;border:1px solid #f0f1f3;border-radius:10px;display:flex;gap:4px;padding:10px 16px;transition:border-color .2s}.audit-section .ds-item:hover{border-color:#d0d4e8}.audit-section .ds-item .ds-lbl{color:#8c8c8c;flex-shrink:0;font-size:13px;white-space:nowrap}.audit-section .ds-item .ds-val{color:#262626;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-ft{justify-content:center}.audit-record-table td,.audit-record-table th{white-space:nowrap}.audit-thumb-row{display:flex;gap:4px;justify-content:center}.audit-photo-grid{display:grid;gap:28px;grid-template-columns:repeat(3,1fr);padding:8px 12px 0}.audit-photo-title{color:#666;font-size:13px;margin-bottom:8px;text-align:center}.audit-photo-sm{border:1px solid #eee;border-radius:4px;cursor:pointer;height:32px;object-fit:cover;width:32px}.audit-photo-lg{background:#f7f8fa;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;display:block;object-fit:contain}.audit-photo-empty,.audit-photo-lg{height:140px;margin:0 auto;width:140px}.audit-photo-empty{align-items:center;background:#fafafa;border:1px dashed #d9d9d9;border-radius:6px;color:#bbb;display:flex;font-size:13px;justify-content:center}.audit-thumb-row .audit-photo-empty{font-size:10px;height:32px;width:32px}.audit-reject-tip{background:#fff1f0;border-radius:6px;color:#cf1322;font-size:13px;margin-top:10px;padding:8px 12px;text-align:left}.audit-ft button:disabled{cursor:not-allowed;opacity:.45}.page-btn{align-items:center;background:#fff;border:1px solid #ddd;border-radius:6px;cursor:pointer;display:inline-flex;font-size:12px;height:32px;justify-content:center;margin:0 2px;min-width:32px;transition:all .15s}.page-btn:hover:not(:disabled){border-color:#4a6cf7;color:#4a6cf7}.page-btn.active{background:#4a6cf7;border-color:#4a6cf7;color:#fff}.page-btn:disabled{cursor:not-allowed;opacity:.4}.page-nav{font-size:13px;padding:0 12px}.page-cur{color:#333;font-size:13px;font-weight:500;margin:0 6px}.toast{border-radius:8px;color:#fff;font-size:13px;left:50%;opacity:0;padding:10px 24px;pointer-events:none;position:fixed;top:20px;transform:translateX(-50%) translateY(-200%);transition:transform .3s,opacity .3s;z-index:9999}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.toast.success{background:#10b981}.toast.error{background:#ef4444}.toast.info{background:#4a6cf7}#cellTip{background:rgba(50,50,50,.95);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.3);color:#fff;font-size:12px;line-height:1.5;max-width:360px;padding:6px 10px;pointer-events:none;white-space:normal;word-break:break-all;z-index:99999}#cellTip,.preview-mask{display:none;position:fixed}.preview-mask{align-items:center;background:rgba(0,0,0,.8);bottom:0;cursor:pointer;justify-content:center;left:0;right:0;top:0;z-index:2000}.preview-mask.show{display:flex}.preview-mask img{border-radius:8px;max-height:90%;max-width:90%}.dash-filter{align-items:flex-end;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06);display:flex;flex-shrink:0;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding:14px 16px}.df-item{display:flex;flex-direction:column;gap:6px}.df-item label{color:#666;font-size:12px;font-weight:500}.df-item label span{color:#999;font-size:11px;font-weight:400}.df-item input,.df-item select{background:#fff;border:1px solid #d9dde5;border-radius:8px;font-size:13px;min-width:150px;outline:none;padding:8px 10px}.df-item input:focus,.df-item select:focus{border-color:#5b6bf5;box-shadow:0 0 0 3px rgba(91,107,245,.12)}.date-select-group{display:flex;gap:6px}.date-select-group select{height:36px;min-width:76px!important;padding:0 8px!important}.date-select-group select:first-child{min-width:92px!important}.multi-select{position:relative;width:300px}.multi-select-display{align-items:center;background:#fff;border:1px solid #d9dde5;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:13px;gap:10px;height:36px;justify-content:space-between;padding:0 10px;user-select:none}.multi-select-display:hover,.multi-select.open .multi-select-display{border-color:#5b6bf5;box-shadow:0 0 0 3px rgba(91,107,245,.12)}.multi-select-display span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-select-display i{color:#999;font-size:12px;font-style:normal;transition:transform .2s}.multi-select.open .multi-select-display i{transform:rotate(180deg)}.multi-select-menu{background:#fff;border:1px solid #d9dde5;border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.14);display:none;left:0;padding:8px;position:absolute;top:42px;width:360px;z-index:20}.multi-select.open .multi-select-menu{display:block}.ms-search{border-bottom:1px solid #f0f1f3;margin-bottom:4px;padding:2px 2px 8px}.ms-search input{border:1px solid #d9dde5;border-radius:7px;font-size:13px;height:34px;outline:none;padding:0 10px;width:100%}.ms-search input:focus{border-color:#5b6bf5;box-shadow:0 0 0 3px rgba(91,107,245,.12)}.ms-list{max-height:640px;overflow-y:auto;padding:2px 0}.ms-option{align-items:center;border-radius:7px;color:#333;cursor:pointer;display:flex!important;font-size:13px;font-weight:400!important;gap:8px;margin:0!important;padding:8px 9px}.ms-option-all{border-bottom:1px solid #f0f1f3;color:#1f2937!important;font-weight:500!important;margin-bottom:4px!important}.ms-option:hover{background:#f3f6ff}.ms-option input{box-shadow:none!important;height:14px!important;min-width:14px!important;padding:0!important;width:14px!important}.ms-option span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ms-empty{color:#999;font-size:13px;padding:20px 10px;text-align:center}.ms-pagin{align-items:center;border-top:1px solid #f0f1f3;display:flex;gap:8px;justify-content:space-between;margin-top:6px;padding:8px 2px 0}.ms-pagin-info{color:#666;font-size:12px;white-space:nowrap}.ms-pagin-btns{display:flex;gap:6px}.ms-pagin-btns button{background:#fff;border:1px solid #d9dde5;border-radius:6px;color:#333;cursor:pointer;font-size:12px;height:28px;padding:0 10px}.ms-pagin-btns button:hover:not(:disabled){border-color:#5b6bf5;color:#5b6bf5}.ms-pagin-btns button:disabled{cursor:not-allowed;opacity:.45}.df-actions{align-items:center;display:flex;gap:8px;padding-bottom:1px}.dash-stat-time{background:#f8fafc;border:1px solid #e5e7eb;border-radius:18px;color:#4b5563;font-size:13px;margin-left:auto;padding:7px 12px;white-space:nowrap}.dash-stat-time span{color:#1f2937;font-weight:400}.dash-section{background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06);flex-shrink:0;margin-bottom:16px;padding:16px}.dash-section .ds-title{border-left:4px solid #5b6bf5;color:#1a1a2e;font-size:15px;font-weight:600;margin-bottom:14px;padding-left:10px}.chart-row{display:flex;flex-wrap:wrap;gap:16px}.chart-box{background:#fafbfc;border:1px solid #f0f1f3;border-radius:10px;flex:1 1 0;min-width:0;overflow:hidden;padding:14px}.cb-title{color:#4b5563;font-size:13px;font-weight:600;margin-bottom:12px;text-align:center}.pie-wrap{height:140px;margin:0 auto 12px;position:relative;width:140px}.pie-chart{border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.pie-slice{transition:flex .3s;width:100%}.pie-center{align-items:center;background:#fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.1);color:#1a1a2e;display:flex;flex-direction:column;font-size:22px;font-weight:700;height:60px;justify-content:center;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:60px}.pie-center span{color:#999;font-size:10px;font-weight:400;margin-top:2px}.chart-legend{display:flex;flex-direction:column;gap:6px}.legend-item{align-items:center;color:#666;display:flex;font-size:12px;gap:6px}.legend-item b{color:#1a1a2e}.legend-dot{border-radius:3px;flex-shrink:0;height:10px;width:10px}.bar-chart{flex-direction:column}.bar-chart,.bar-row{display:flex;gap:8px}.bar-row{align-items:center;font-size:12px}.bar-label{color:#666;flex-shrink:0;text-align:right;white-space:nowrap;width:70px}.bar-track{background:#f0f1f3;border-radius:6px;flex:1;height:22px;overflow:hidden}.bar-fill{border-radius:6px;height:100%;min-width:2px;transition:width .4s ease}.bar-val{color:#1a1a2e;flex-shrink:0;font-weight:600;width:30px}.hbar-row{align-items:center;display:flex;font-size:12px;gap:8px;margin-bottom:6px}.hbar-label{color:#666;flex-shrink:0;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap;width:120px}.hbar-track{background:#f0f1f3;border-radius:6px;flex:1;height:20px;overflow:hidden}.hbar-fill{border-radius:6px;height:100%;min-width:2px;transition:width .4s ease}.hbar-val{color:#1a1a2e;flex-shrink:0;font-weight:600;text-align:left;width:30px}.vbar-chart{align-items:flex-end;display:flex;gap:4px;height:200px;padding:4px 0 0}.vbar-col{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:flex-end;min-width:40px}.vbar-val{color:#262626;font-size:11px;font-weight:600;margin-bottom:3px;white-space:nowrap}.vbar-track{align-items:flex-end;background:transparent;display:flex;flex:1;max-width:40px}.vbar-fill,.vbar-track{border-radius:6px 6px 0 0;width:100%}.vbar-fill{background:linear-gradient(180deg,#5b6bf5,#7c5cfa);box-shadow:0 0 8px rgba(91,107,245,.25);min-height:3px;transition:height .4s ease}.vbar-label{color:#666;font-size:11px;height:32px;line-height:14px;margin-top:5px;max-width:70px;overflow:hidden;text-align:center;text-overflow:ellipsis;transform:rotate(-20deg);transform-origin:top center;white-space:nowrap}.followup-chip{align-items:center;background:linear-gradient(135deg,#ecfdf5,#e0f2fe);border:1px solid rgba(16,185,129,.4);border-radius:999px;box-shadow:0 0 0 1px rgba(56,189,248,.2);color:#047857;cursor:pointer;display:inline-flex;font-size:12px;justify-content:center;padding:2px 10px;transition:all .2s;white-space:nowrap}.followup-chip:hover{background:linear-gradient(135deg,#bbf7d0,#bfdbfe);border-color:rgba(22,163,74,.7);color:#065f46}.followup-btn{background:linear-gradient(135deg,rgba(129,140,248,.08),rgba(59,130,246,.03))!important;border-color:#6366f1!important;border-radius:999px!important;box-shadow:0 0 0 1px rgba(99,102,241,.1)!important;color:#4f46e5!important;font-size:12px!important;padding:2px 10px!important}.followup-btn:hover{background:linear-gradient(135deg,rgba(129,140,248,.16),rgba(59,130,246,.06))!important;box-shadow:0 4px 10px rgba(79,70,229,.25)!important;color:#4338ca!important}.followup-remark{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}#followupModal .modal{background:radial-gradient(circle at top left,#eef2ff 0,#f9fafb 42%,#fff 100%);border-radius:18px;box-shadow:0 24px 60px rgba(15,23,42,.25)}#followupModal .modal-hd{background:linear-gradient(120deg,rgba(79,70,229,.98),rgba(59,130,246,.96));color:#fff;padding:14px 20px}#followupModal .modal-hd h3{color:#f9fafb;letter-spacing:.4px}#followupModal .modal-hd #followupSubtitle{color:rgba(226,232,240,.96);font-weight:600;margin-top:4px}#followupModal .modal-close{color:#e5e7eb}#followupModal .modal-close:hover{color:#fff}#followupModal .modal-hd .btn-followup-add{background:linear-gradient(135deg,#22c55e,#16a34a);border:none;border-radius:999px;box-shadow:0 0 0 1px rgba(22,163,74,.4);color:#fff;cursor:pointer;font-size:13px;padding:7px 20px;transition:all .2s}#followupModal .modal-hd .btn-followup-add:hover{background:linear-gradient(135deg,#16a34a,#15803d);box-shadow:0 4px 10px rgba(22,163,74,.3);transform:translateY(-1px)}#followupModal .modal-bd{padding:14px 18px 4px}#followupBody{background:#fff;border:1px solid #e5e7eb;border-radius:10px;overflow:auto}#followupBody .enr-table{border-collapse:collapse;font-size:13px;min-width:100%;width:auto}#followupBody .enr-table thead{background:#f9fafb}#followupBody .enr-table th{border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;color:#4b5563;font-weight:600;padding:8px 10px;text-align:center;white-space:nowrap}#followupBody .enr-table th:last-child{border-right:none}#followupBody .enr-table td{border:1px solid #dee2e6;color:#374151;padding:6px 8px;text-align:center}#followupBody .enr-table td:nth-child(2),#followupBody .enr-table th:nth-child(2){min-width:150px;white-space:nowrap}#followupBody .enr-table td:nth-child(3){text-align:left;white-space:nowrap}#followupBody .enr-table td:last-child{border-right:none}#followupBody .empty{background:linear-gradient(135deg,#f9fafb,#eff6ff);border:1px dashed #cbd5f5;border-radius:10px}#followupBody .btn-edit{background-color:#3b82f6;border:1px solid #2563eb;border-radius:999px;color:#fff;cursor:pointer;font-size:12px;margin-right:4px;padding:2px 8px;transition:all .2s}#followupBody .btn-edit:hover{background-color:#2563eb;transform:translateY(-1px)}#followupBody .btn-del{background-color:#ef4444;border:1px solid #dc2626;border-radius:999px;color:#fff;cursor:pointer;font-size:12px;padding:2px 8px;transition:all .2s}#followupBody .btn-del:hover{background-color:#dc2626;transform:translateY(-1px)}#followupModal .modal-ft{background:transparent;border-top:none;padding:10px 18px 14px}.about-card{display:flex;flex:1;flex-direction:column;overflow:auto;padding:0}.about-header{border-bottom:1px solid #e5e7eb;flex-shrink:0;padding:16px 20px}.about-header h3{color:#1a1a2e;font-size:16px;font-weight:600;margin:0}.about-body{align-items:flex-start;display:flex;flex:1;flex-wrap:wrap;gap:40px;justify-content:center;padding:40px 20px}.qr-section{align-items:center;display:flex;flex-direction:column;gap:12px}.qr-section-title{color:#1a1a2e;font-size:15px;font-weight:600}.qr-preview-box{align-items:center;background:#fafafa;border:2px solid #e5e7eb;border-radius:10px;cursor:pointer;display:flex;height:200px;justify-content:center;overflow:hidden;transition:border-color .2s,box-shadow .2s;width:200px}.qr-preview-box:hover{border-color:#5b6bf5;box-shadow:0 4px 12px rgba(91,107,245,.15)}.qr-preview-box img{height:100%;object-fit:contain;width:100%}.qr-canvas-wrap{display:flex;justify-content:center;width:240px}.qr-composite.qr-placeholder{cursor:default}.qr-composite,.qr-composite.qr-placeholder:hover{box-shadow:0 4px 14px rgba(234,88,12,.12)}.qr-composite{background:transparent;border:none;border-radius:22px;cursor:pointer;display:block;transition:box-shadow .2s}.qr-composite:hover{border-color:#5b6bf5;box-shadow:0 4px 12px rgba(91,107,245,.15)}.qr-preview-box.qr-empty{cursor:default}.qr-preview-box.qr-empty:hover{border-color:#e5e7eb;box-shadow:none}.qr-preview-box.qr-empty span{color:#bfbfbf;font-size:14px}.qr-tip{color:#999;font-size:12px}.about-footer{border-top:1px solid #e5e7eb;flex-shrink:0;padding:16px 20px;text-align:center}.about-footer p{color:#999;font-size:13px;margin:0}@media(max-width:768px){.sidebar{display:none}.content{padding:16px}.stats-grid{grid-template-columns:1fr 1fr}.search-bar input{min-width:120px}.chart-box{min-width:100%}.bar-label{width:60px}.hbar-label{width:80px}.dash-filter{align-items:stretch}.df-item,.df-item input,.df-item select,.multi-select{min-width:0;width:100%}.multi-select-menu{max-width:100vw;width:100%}.date-select-group{width:100%}.date-select-group select,.date-select-group select:first-child{flex:1;min-width:0!important}.df-actions{justify-content:flex-end;width:100%}.dash-stat-time{margin-left:0;width:100%}.top-bar .user-info{gap:6px}.top-clock{display:none}}