:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f7fb;font-family:Inter,Microsoft YaHei,PingFang SC,Hiragino Sans GB,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}html{min-width:320px}body{min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}.shell{background:#fff;grid-template-columns:264px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#f8fafc;background:#172033;flex-direction:column;gap:24px;height:100vh;padding:24px 16px 18px;display:flex;position:sticky;top:0;overflow:hidden}.brand{align-items:center;gap:12px;display:flex}.brand.compact{margin-bottom:28px}.brand strong,.user-panel strong,.record strong,.case-card strong{color:inherit;display:block}.brand span,.user-panel span,.record span,.case-card span,.muted{color:#778293;font-size:13px}.sidebar .brand span{color:#aeb9c9}.nav-list{scrollbar-width:thin;flex:1;grid-auto-rows:min-content;align-content:start;gap:6px;padding-right:2px;display:grid;overflow-y:auto}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s}.nav-item{color:#cbd5e1;text-align:left;background:0 0;border-radius:6px;flex:none;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 12px;display:flex}.nav-item:hover,.nav-item.active{color:#fff;background:#22304a}.workspace{box-sizing:border-box;width:100%;min-width:0;max-width:1480px;margin:0 auto;padding:28px 32px}.topbar{margin-bottom:22px;display:block}.eyebrow{color:#607089;margin:0 0 4px;font-size:13px}h1,h2,p{margin:0}h1{color:#172033;font-size:26px;font-weight:700;line-height:1.25}h2{color:#172033;font-size:18px;font-weight:700}.user-panel{background:#fff;border:1px solid #e4e8ee;border-radius:8px;align-items:center;gap:10px;min-width:288px;padding:8px;display:flex;box-shadow:0 1px 2px #11182708}.sidebar-user{box-sizing:border-box;width:100%;min-width:0;box-shadow:none;background:#ffffff0f;border-color:#94a3b83d}.sidebar-user .user-avatar{color:#dbeafe;background:#2563eb38;border-color:#93c5fd3d}.sidebar-user .user-copy strong{color:#fff}.sidebar-user .user-copy span{color:#aeb9c9}.sidebar-user .status{color:#cfe1ff;background:#60a5fa1f;border-color:#93c5fd38;min-height:20px;padding:0 7px;font-size:11px}.sidebar-user .logout-button{color:#dbeafe}.sidebar-user .logout-button:hover{background:#ffffff17}.mobile-user{display:none}.user-avatar{color:#1d4ed8;background:#eff6ff;border:1px solid #dbeafe;border-radius:8px;flex:none;place-items:center;width:38px;height:38px;display:grid}.user-copy{flex:1;min-width:0}.user-copy>div{align-items:center;gap:8px;display:flex}.user-copy strong{color:#172033}.logout-button{color:#364152;background:0 0;border-radius:6px;align-items:center;gap:6px;min-height:34px;padding:0 8px;display:inline-flex}.logout-button:hover{background:#f0f3f6}.icon-button,.panel-head button,.row-actions button{color:#364152;background:#f0f3f6;border-radius:6px;min-height:34px;padding:0 10px}.icon-button:hover,.panel-head button:hover,.row-actions button:hover,.secondary:hover{background:#e6ebf0}.page-stack{gap:18px;display:grid}.todo-strip,.sub-metrics{gap:12px;display:grid}.todo-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.todo-strip button,.sub-metrics>div{text-align:left;background:#fff;border:1px solid #e4e8ee;border-radius:8px;min-height:74px;padding:14px 16px;box-shadow:0 1px 2px #11182708}.todo-strip button{color:#34445c}.todo-strip button:hover{background:#fafbfc;border-color:#c9d1dc}.todo-strip button.attention{background:#fff7f7;border-color:#fecaca}.todo-strip button.attention span{color:#991b1b}.todo-strip button.attention strong{color:#b91c1c}.todo-strip span,.sub-metrics span{color:#66758b;margin-bottom:7px;font-size:13px;display:block}.todo-strip strong,.sub-metrics strong{color:#172033;font-size:18px;display:block}.sub-metrics em{color:#64748b;margin-top:6px;font-size:12px;font-style:normal;display:block}.sub-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.sub-metrics.four{grid-template-columns:repeat(4,minmax(0,1fr))}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.metric{background:#fff;border:1px solid #e5e9ef;border-radius:8px;gap:10px;padding:18px 18px 16px;display:grid;box-shadow:0 1px 2px #11182709}.metric span{color:#66758b;font-size:14px}.metric strong{color:#151b26;letter-spacing:0;font-size:25px;line-height:1.15}.split{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.panel,.toolbar,.form-grid,.filter-bar{background:#fff;border:1px solid #e5e9ef;border-radius:8px;min-width:0;box-shadow:0 1px 2px #11182708}.panel{padding:18px}.report-panel{min-height:286px}.panel-head,.toolbar,.filter-bar{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-head{margin-bottom:14px}.toolbar,.filter-bar{padding:14px 16px}.form-header{background:#fff;border:1px solid #e5e9ef;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex;box-shadow:0 1px 2px #11182708}.form-header p{color:#64748b;margin-top:6px;font-size:14px}.record-list{gap:10px;display:grid}.record{border-bottom:1px solid #eef1f4;justify-content:space-between;align-items:center;gap:12px;min-height:58px;display:flex}.record:last-child{border-bottom:0}.record b{color:#172033;text-align:right;margin-bottom:4px;font-size:14px;display:block}.status{color:#414b5a;white-space:nowrap;background:#f1f3f6;border:1px solid #e1e5ea;border-radius:999px;align-items:center;min-height:24px;padding:0 8px;font-size:12px;display:inline-flex}.status-待审核,.status-待处理{color:#92400e;background:#fffbeb;border-color:#fde68a}.status-已通过,.status-已办理{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.status-已报销,.status-已平账,.status-已完成{color:#35594b;background:#edf5f1;border-color:#d6e5de}.status-管理员{color:#1e3a8a;background:#eef4ff;border-color:#c7d8f8}.status-财务{color:#075985;background:#f0f9ff;border-color:#bae6fd}.status-员工{color:#475569;background:#f8fafc;border-color:#dbe3ee}.status-已驳回,.status-已退费{color:#774142;background:#f8eeee;border-color:#ead4d5}.primary,.secondary{white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:0 14px;display:inline-flex}.primary{color:#fff;background:#1d4ed8}.primary:hover{background:#1e40af;box-shadow:0 4px 10px #1d4ed829}.primary:disabled{opacity:.5;cursor:not-allowed}.secondary{color:#364152;background:#f0f3f6;border:1px solid #dce2e8}.wide{width:100%}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:16px;display:grid}.compact-form{gap:14px;display:grid}label{color:#34445c;gap:6px;font-size:14px;display:grid}input,select,textarea{box-sizing:border-box;color:#172033;background:#fff;border:1px solid #d7dde5;border-radius:6px;outline:none;width:100%;min-height:40px;padding:8px 10px}textarea{resize:vertical;min-height:78px}input:focus,select:focus,textarea:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa2e}.full{grid-column:1/-1}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.detail-grid>div{background:#fbfcfe;border:1px solid #eef1f4;border-radius:8px;min-height:58px;padding:12px}.detail-grid span{color:#64748b;margin-bottom:6px;font-size:13px;display:block}.detail-grid strong,.detail-grid p{color:#172033;word-break:break-word;font-size:15px;line-height:1.5}.attachment-preview{object-fit:contain;background:#fff;border:1px solid #e5e9ef;border-radius:8px;width:min(420px,100%);max-height:300px;display:block}.form-success{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;padding:9px 10px;font-size:13px}.compact-action{min-height:30px;padding:0 10px}.form-actions{justify-content:flex-end;display:flex}.table-wrap{background:#fff;border:1px solid #e5e9ef;border-radius:8px;overflow:auto;box-shadow:0 1px 2px #11182708}table{border-collapse:collapse;width:100%;min-width:1080px}th,td{text-align:left;color:#28384f;border-bottom:1px solid #edf1f6;padding:13px 14px;font-size:14px}tbody tr:hover{background:#fafbfc}th{color:#667386;background:#fafbfc;font-weight:700}.row-actions{gap:8px;display:flex}.case-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.case-card{background:#fff;border:1px solid #e5e9ef;border-radius:8px;align-content:space-between;gap:14px;min-height:132px;padding:16px;display:grid;box-shadow:0 1px 2px #11182708}.case-card p{color:#34445c;line-height:1.55}.case-foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.check-group{color:#34445c;gap:8px;font-size:14px;display:grid}.check-group>div{flex-wrap:wrap;gap:10px;display:flex}.check-group label{background:#f8fafc;border:1px solid #dce2e8;border-radius:6px;align-items:center;gap:6px;min-height:36px;padding:0 10px;display:inline-flex}.check-group input{width:auto;min-height:auto}.insurance-month{max-width:240px}.search-box{color:#607089;flex:1;align-items:center;gap:8px;display:flex}.search-box input{max-width:360px}.bars{gap:12px;display:grid}.bar-row{color:#34445c;grid-template-columns:80px 1fr 92px;align-items:center;gap:10px;font-size:14px;display:grid}.bar-row div{background:#edf2f7;border-radius:999px;height:10px;overflow:hidden}.bar-row i{border-radius:inherit;background:#5f6b7a;min-width:3px;height:100%;display:block}.report-filters{background:#fff;border:1px solid #e5e9ef;border-radius:8px;grid-template-columns:160px 160px minmax(220px,1fr) auto;align-items:end;gap:12px;padding:14px 16px;display:grid;box-shadow:0 1px 2px #11182708}.report-section{gap:16px;display:grid}.report-switch{background:#f8fafc;border:1px solid #dbe3ee;border-radius:8px;gap:4px;width:fit-content;padding:4px;display:inline-flex}.report-switch button{color:#475569;background:0 0;border-radius:6px;min-height:34px;padding:0 14px}.report-switch button.active{color:#fff;background:#1d4ed8}.report-section-head{align-items:flex-start;gap:12px;padding:4px 0 0;display:flex}.report-section-head>span{color:#1d4ed8;white-space:nowrap;background:#eff6ff;border:1px solid #dbeafe;border-radius:999px;align-items:center;min-height:28px;padding:0 10px;font-size:13px;font-weight:700;display:inline-flex}.report-section-head h2{margin-bottom:4px;font-size:19px}.report-section-head p{color:#64748b;font-size:13px}.report-section-body{gap:16px;min-width:0;display:grid}.report-search input{max-width:none}.chart-note{color:#778293;font-size:13px}.trend-chart{grid-template-columns:repeat(8,minmax(36px,1fr));align-items:end;gap:14px;height:210px;padding-top:12px;display:grid}.trend-day{text-align:center;grid-template-rows:1fr auto;gap:10px;height:100%;display:grid}.trend-bars{background:linear-gradient(0deg,#f4f6f8 1px,#0000 1px) 0 0/100% 25%;border-bottom:1px solid #e6ebf0;justify-content:center;align-items:end;gap:5px;min-height:0;display:flex}.trend-bars i{border-radius:4px 4px 0 0;width:12px;min-height:0}.expense-bar{background:#2563eb}.income-bar{background:#93c5fd}.trend-day span{color:#667386;font-size:12px}.donut-layout{grid-template-columns:176px 1fr;align-items:center;gap:20px;display:grid}.donut{aspect-ratio:1;border-radius:50%;place-items:center;width:176px;display:grid;box-shadow:inset 0 0 0 1px #1118270d}.donut>div{aspect-ratio:1;background:#fff;border-radius:50%;align-content:center;place-items:center;width:104px;display:grid;box-shadow:0 0 0 1px #e5e9ef}.donut span,.legend-item span,.rank-row span{color:#667386;font-size:13px}.donut strong{color:#172033;font-size:15px}.legend-list,.rank-bars{gap:11px;display:grid}.legend-item{grid-template-columns:auto 1fr auto;align-items:center;gap:9px;display:grid}.legend-item i{border-radius:50%;width:9px;height:9px}.legend-item strong{color:#172033;font-size:13px}.rank-row{gap:7px;display:grid}.rank-row>div{justify-content:space-between;align-items:center;gap:12px;display:flex}.rank-row strong{color:#172033;font-size:13px}.rank-row p{background:#eef1f4;border-radius:999px;height:8px;display:flex;overflow:hidden}.rank-row i{border-radius:inherit;background:#2563eb;height:100%;display:block}.compact-select{color:#607089;align-items:center;gap:8px;width:190px;display:flex;position:relative}.compact-select select{padding-left:10px}.mobile-list{display:none}.mobile-card{background:#fff;border:1px solid #e5e9ef;border-radius:8px;gap:12px;padding:14px;display:grid;box-shadow:0 1px 2px #11182708}.mobile-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.mobile-card-head strong{color:#172033;display:block}.mobile-card-head span{color:#718096;font-size:13px}.mobile-card dl{grid-template-columns:1fr 1fr;gap:10px;margin:0;display:grid}.mobile-card dt{color:#718096;font-size:12px}.mobile-card dd{color:#28384f;margin:2px 0 0;font-size:14px}.mobile-actions{flex-wrap:wrap}.notice,.empty{color:#607089;background:#fff;border:1px solid #e5e9ef;border-radius:8px;padding:14px 16px}.mobile-tabs{display:none}.login-page{background:#f8fafc;place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{background:#fff;border:1px solid #e1e6ed;border-radius:8px;width:min(440px,100%);padding:26px;box-shadow:0 18px 45px #11182714}.login-panel form{gap:16px;display:grid}.form-error{color:#b42318;background:#fff1f0;border:1px solid #ffd6d2;border-radius:6px;padding:9px 10px;font-size:13px}@media (width<=1024px){body{background:#f8fafc}.shell{background:#f8fafc;grid-template-columns:1fr}.sidebar{display:none}.workspace{max-width:none;padding:0 12px 24px}.topbar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff5;border-bottom:1px solid #e5e9ef;justify-content:space-between;align-items:flex-start;gap:10px;margin:0 -12px;padding:12px 12px 8px;display:flex}.topbar h1{font-size:22px;line-height:1.2}.eyebrow{font-size:12px}.mobile-user{width:auto;min-width:0;min-height:32px;box-shadow:none;background:0 0;border:0;gap:6px;margin-top:0;padding:0;display:inline-flex}.mobile-user .user-avatar{width:30px;height:30px}.mobile-user .user-copy{max-width:72px}.mobile-user .user-copy>div{gap:0}.mobile-user .user-copy strong{white-space:nowrap;font-size:14px}.mobile-user .user-copy .status,.mobile-user .user-copy span{display:none}.mobile-user .logout-button{min-height:30px;padding:0 4px}.mobile-tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;background:#f8fafcfa;border-bottom:1px solid #edf1f6;align-items:center;gap:8px;width:100%;max-width:100vw;margin:0 -12px 14px;padding:10px 12px;display:flex;overflow:auto hidden}.mobile-tabs::-webkit-scrollbar{display:none}.mobile-tabs button{white-space:nowrap;color:#5f6673;background:#fff;border:1px solid #dbe3ee;border-radius:999px;flex:none;align-items:center;gap:6px;min-height:38px;padding:0 13px;display:inline-flex;box-shadow:0 1px 2px #0f172a0a}.mobile-tabs button.active{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.metric-grid,.sub-metrics,.sub-metrics.four{grid-template-columns:1fr 1fr}.split,.case-grid,.todo-strip,.detail-grid{grid-template-columns:1fr}.page-stack{gap:12px}.panel,.toolbar,.form-grid,.filter-bar,.report-filters,.table-wrap,.case-card,.mobile-card,.notice,.empty{border-radius:10px}}@media (width<=720px){.workspace{padding:0 12px 24px}.topbar{display:flex}.metric-grid,.sub-metrics,.sub-metrics.four{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.expense-metrics,.student-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.split,.case-grid,.todo-strip,.form-grid,.detail-grid{grid-template-columns:1fr}.metric{border-radius:10px;gap:7px;min-height:86px;padding:13px}.metric strong{overflow-wrap:anywhere;font-size:19px;line-height:1.18}.sub-metrics>div{min-height:76px;padding:12px}.sub-metrics strong{overflow-wrap:anywhere;font-size:16px}.expense-metrics>div,.student-metrics>div{min-height:70px;padding:10px}.expense-metrics span,.student-metrics span{margin-bottom:6px;font-size:12px}.expense-metrics strong,.student-metrics strong{font-size:clamp(14px,3.7vw,16px);line-height:1.2}.todo-strip{gap:10px}.todo-strip button{min-height:64px;padding:12px}.toolbar{box-shadow:none;background:0 0;border:0;justify-content:space-between;align-items:center;padding:2px 0;display:flex}.toolbar h2{font-size:18px}.toolbar .primary{min-height:36px;padding:0 13px}.form-header{border-radius:10px;gap:12px;padding:14px;display:grid}.form-header .secondary{width:100%}.filter-bar{grid-template-columns:minmax(0,1fr) 128px;align-items:center;gap:10px;padding:12px;display:grid}.student-filter{grid-template-columns:1fr}.report-filters{grid-template-columns:1fr;align-items:stretch;display:grid}.report-switch{box-sizing:border-box;width:100%}.report-switch button{flex:1 1 0;min-width:0}.trend-chart{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:12px;width:100%;min-width:0;max-width:100%;height:240px;padding-bottom:4px;display:flex;overflow:auto hidden}.trend-chart::-webkit-scrollbar{display:none}.trend-day{flex:0 0 56px}.donut-layout{grid-template-columns:1fr;justify-items:center}.legend-list,.rank-bars{width:100%}.compact-select{width:auto;min-width:0}.compact-select select{min-width:0}.table-wrap{display:none}.mobile-list{gap:12px;display:grid}.mobile-card{padding:13px}.mobile-card-head{grid-template-columns:1fr auto;display:grid}.mobile-card-head strong{font-size:16px;line-height:1.35}.mobile-card dl{border-top:1px solid #eef2f7;padding-top:10px}.search-box{grid-template-columns:auto 1fr;min-width:0;display:grid}.search-box input{min-width:0;max-width:none}.record{align-items:flex-start}.case-foot{flex-wrap:wrap}.bar-row{grid-template-columns:72px 1fr}.bar-row strong{grid-column:2}}@media (width<=360px){.filter-bar{grid-template-columns:1fr}.compact-select{width:100%}}
