:root{--primary: #1e3a5f;--primary-light: #2d5a8e;--primary-lighter: #e8eef6;--primary-bg: #f8faff;--accent: #d4872f;--accent-light: #fdf3e6;--accent-glow: rgba(212, 135, 47, .12);--success: #15803d;--success-light: #f0fdf4;--warning: #b45309;--warning-light: #fffbeb;--danger: #dc2626;--danger-light: #fef2f2;--bg: #f4f5f7;--surface: #ffffff;--surface-alt: #f8f9fb;--text: #1e293b;--text-secondary: #64748b;--text-muted: #94a3b8;--border: #e2e8f0;--border-light: #f1f5f9;--shadow-sm: 0 1px 2px rgba(30, 58, 95, .04), 0 1px 3px rgba(30, 58, 95, .03);--shadow-md: 0 4px 12px rgba(30, 58, 95, .06), 0 2px 4px rgba(30, 58, 95, .04);--shadow-lg: 0 8px 24px rgba(30, 58, 95, .08), 0 4px 8px rgba(30, 58, 95, .04);--shadow-xl: 0 12px 40px rgba(30, 58, 95, .1);--radius: 10px;--radius-sm: 6px;--radius-lg: 14px;--sidebar-w: 220px;--transition-dur: .2s;--transition-ease: cubic-bezier(.4, 0, .2, 1);--transition: background-color var(--transition-dur) var(--transition-ease), color var(--transition-dur) var(--transition-ease), border-color var(--transition-dur) var(--transition-ease), box-shadow var(--transition-dur) var(--transition-ease), transform var(--transition-dur) var(--transition-ease), opacity var(--transition-dur) var(--transition-ease)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Noto Sans CJK SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;touch-action:manipulation;-webkit-tap-highlight-color:transparent}*:focus-visible{outline:2px solid var(--primary-light);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app-container{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);min-height:100vh;background:linear-gradient(180deg,#1a2e4a,#0f1f35);position:fixed;left:0;top:0;z-index:100;display:flex;flex-direction:column;box-shadow:2px 0 16px #00000026;overflow-y:auto}.sidebar-header{padding:20px 18px 14px;border-bottom:1px solid rgba(255,255,255,.06)}.sidebar-logo{display:flex;align-items:center;gap:10px;font-size:1.1rem;font-weight:700;color:#fff;letter-spacing:.02em}.sidebar-logo-icon{width:32px;height:32px;background:linear-gradient(135deg,var(--accent),#f59e0b);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff;box-shadow:0 2px 8px #d4872f4d}.sidebar-user{padding:12px 18px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.06);font-size:.85rem;color:#ffffffb3}.sidebar-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--primary-light),var(--primary));display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.sidebar-nav{flex:1;padding:8px 0;display:flex;flex-direction:column;gap:1px}.nav-btn{display:flex;align-items:center;gap:10px;padding:9px 18px;background:transparent;border:none;color:#ffffff8c;font-size:.875rem;font-family:inherit;cursor:pointer;transition:var(--transition);text-align:left;width:100%;border-left:3px solid transparent;position:relative}.nav-btn:hover{background:#ffffff0f;color:#ffffffd9}.nav-btn.active{color:#fff;background:#ffffff14;border-left-color:var(--accent);font-weight:500}.nav-btn.active:after{content:"";position:absolute;right:8px;top:50%;transform:translateY(-50%);width:4px;height:4px;border-radius:50%;background:var(--accent);box-shadow:0 0 6px #d4872f80}.nav-icon{width:20px;text-align:center;font-size:1rem;flex-shrink:0}.nav-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer{padding:12px 18px;border-top:1px solid rgba(255,255,255,.06)}.logout-btn{display:flex;align-items:center;gap:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffff80;font-size:.8rem;font-family:inherit;padding:6px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);width:100%}.logout-btn:hover{background:#ef444426;border-color:#ef444466;color:#ef4444}.main-content{margin-left:var(--sidebar-w);flex:1;padding:24px 28px;min-height:100vh;background:var(--bg)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px 24px;margin-bottom:20px;transition:box-shadow var(--transition);border:1px solid var(--border-light)}.card:hover{box-shadow:var(--shadow-md)}.card h2,.card h3{margin-bottom:16px;font-weight:600}.card h2{font-size:1.2rem;color:var(--text)}.card h3{font-size:1.05rem;color:var(--text)}.table-container{overflow-x:auto;border-radius:var(--radius-sm);border:1px solid var(--border)}table{width:100%;border-collapse:collapse;font-size:.875rem}td.text-right,th.text-right,.stat-value,.stat-sub,.money-column{font-variant-numeric:tabular-nums}thead th{background:var(--surface-alt);padding:10px 14px;text-align:left;font-weight:600;font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--border);white-space:nowrap}tbody td{padding:10px 14px;border-bottom:1px solid var(--border-light);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--primary-bg)}tbody tr:active{background:var(--primary-lighter)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 18px;border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;font-weight:500;cursor:pointer;transition:var(--transition);border:1px solid transparent;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 1px 2px #1e3a5f26}.btn-primary:hover:not(:disabled){background:var(--primary-light);box-shadow:0 2px 6px #1e3a5f33;transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-outline{background:transparent;color:var(--text-secondary);border-color:var(--border)}.btn-outline:hover:not(:disabled){background:var(--surface-alt);border-color:var(--primary);color:var(--primary)}.btn-warning{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-warning:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.btn-sm{padding:5px 12px;font-size:.8rem}.btn-lg{padding:10px 24px;font-size:1rem}input,select,textarea{width:100%;padding:8px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;background:var(--surface);color:var(--text);transition:border-color var(--transition-dur) var(--transition-ease),box-shadow var(--transition-dur) var(--transition-ease);outline:2px solid transparent;outline-offset:1px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary-light);outline-offset:1px}input:focus,select:focus,textarea:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px #2d5a8e14}input:hover:not(:focus),select:hover:not(:focus){border-color:#cbd5e1}label{display:block;font-size:.82rem;font-weight:500;color:var(--text-secondary);margin-bottom:4px}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.field-error{font-size:.78rem;color:var(--danger);margin-top:3px;display:block}.flex-between{display:flex;justify-content:space-between;align-items:center;gap:12px}.flex-gap{display:flex;gap:10px;align-items:center}.flex-center{display:flex;justify-content:center;align-items:center}.mt-2{margin-top:6px}.mt-4{margin-top:14px}.mt-6{margin-top:20px}.mb-4{margin-bottom:14px}.ml-4{margin-left:14px}.text-sub{color:var(--text-secondary);font-size:.85rem}.text-muted{color:var(--text-muted);font-size:.8rem}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.text-center{text-align:center}.text-right{text-align:right}.font-bold{font-weight:600}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:12px;font-size:.78rem;font-weight:500}.badge-success{background:var(--success-light);color:var(--success)}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-danger{background:var(--danger-light);color:var(--danger)}.badge-info{background:var(--primary-lighter);color:var(--primary)}.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty-state-icon{font-size:2.5rem;margin-bottom:10px;opacity:.4}.loading-dots{display:flex;align-items:center;justify-content:center;gap:6px;padding:24px}.loading-dots span{width:8px;height:8px;border-radius:50%;background:var(--text-muted);animation:dotPulse 1.2s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.15s}.loading-dots span:nth-child(3){animation-delay:.3s}@keyframes dotPulse{0%,80%,to{transform:scale(.6);opacity:.3}40%{transform:scale(1);opacity:.8}}.toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-lg);font-size:.875rem;animation:toastSlideIn .25s ease-out;min-width:200px;border-left:4px solid var(--primary);border:1px solid var(--border);border-left-width:4px;pointer-events:auto;cursor:pointer;transition:opacity .2s}.toast:hover{opacity:.85}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}.toast.info{border-left-color:var(--primary)}@keyframes toastSlideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease-out;overscroll-behavior:contain}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:28px;min-width:360px;max-width:520px;animation:modalSlideUp .2s ease-out}@keyframes modalSlideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-card h3{margin-bottom:12px}.modal-card p{color:var(--text-secondary);font-size:.9rem;line-height:1.6;margin-bottom:20px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border-light)}.pagination-info{font-size:.82rem;color:var(--text-muted);min-width:80px;text-align:center}.page-enter{animation:pageIn .2s ease-out}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.stat-card{background:var(--surface);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm);border:1px solid var(--border-light);transition:var(--transition)}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.stat-value{font-size:1.6rem;font-weight:700;color:var(--text);line-height:1.2}.stat-sub{font-size:.8rem;color:var(--text-secondary);margin-top:4px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.long-list tbody tr,.table-container.long-list tbody tr{content-visibility:auto;contain-intrinsic-size:0 48px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-pad,.page-container{padding:24px 28px}@media (max-width: 1024px){.page-pad,.page-container,.main-content{padding:16px}.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.page-pad,.page-container,.main-content{padding:12px}}.topbar{display:none;position:fixed;top:0;left:0;right:0;z-index:90;height:52px;align-items:center;gap:10px;padding:0 10px;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.topbar-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--text);transition:background-color var(--transition-dur) var(--transition-ease)}.topbar-btn:hover{background:var(--surface-alt)}.topbar-btn:active{background:var(--border-light)}.topbar-hamburger{position:relative;width:20px;height:14px}.topbar-hamburger span{position:absolute;left:0;right:0;height:2px;background:var(--text);border-radius:2px;transition:transform .2s var(--transition-ease),opacity .2s}.topbar-hamburger span:nth-child(1){top:0}.topbar-hamburger span:nth-child(2){top:6px}.topbar-hamburger span:nth-child(3){top:12px}.topbar-title{flex:1;font-size:1rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-user{width:32px;height:32px;flex-shrink:0;border-radius:50%;background:linear-gradient(135deg,var(--primary-light),var(--primary));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600}@media (max-width: 900px){.topbar{display:flex}.main-content{margin-left:0;padding:68px 16px 16px}.sidebar{width:264px;transform:translate(-100%);visibility:hidden;transition:transform var(--transition-dur) var(--transition-ease),visibility var(--transition-dur);box-shadow:var(--shadow-xl)}.sidebar.open{transform:translate(0);visibility:visible}.sidebar-backdrop{display:block}}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:95;animation:fadeIn .15s ease-out}.sidebar-close{display:none;margin-left:auto;width:32px;height:32px;border:none;background:#ffffff14;color:#ffffffd9;border-radius:8px;cursor:pointer;font-size:.9rem;line-height:1;transition:background-color var(--transition-dur) var(--transition-ease)}.sidebar-close:hover{background:#ffffff2e;color:#fff}@media (max-width: 900px){.sidebar-close{display:inline-flex;align-items:center;justify-content:center}.sidebar:not(.open){visibility:hidden}.nav-btn{padding:12px 18px}.btn{min-height:38px}}body.no-scroll{overflow:hidden}@media (hover: none){.btn:active{transform:scale(.97)}.card:active{transform:scale(.995)}.stat-card:active{transform:scale(.99)}}@media (max-width: 640px){.modal-overlay{align-items:flex-end;padding:0}.modal-card{position:fixed;left:0;right:0;bottom:0;width:100%;max-width:100%;min-width:0;border-radius:16px 16px 0 0;padding:20px;animation:sheetUp .25s ease-out}.toast-container{left:12px;right:12px;bottom:12px}.toast{width:100%;min-width:0}}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.table-container:has(.rtable){overflow-x:visible}@media (max-width: 640px){.rtable thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.rtable,.rtable tbody,.rtable tr,.rtable td{display:block;width:100%}.rtable tr{margin-bottom:12px;border:1px solid var(--border);border-radius:var(--radius);padding:6px 12px;background:var(--surface);box-shadow:var(--shadow-sm)}.rtable tr:hover,.rtable tr:active{background:var(--surface)}.rtable td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border:none;border-bottom:1px solid var(--border-light);text-align:right;white-space:normal}.rtable tr td:last-child{border-bottom:none}.rtable td:before{content:attr(data-label);font-weight:600;color:var(--text-secondary);text-align:left;flex-shrink:0}.rtable td.text-right{text-align:right}.rtable td.rt-actions{justify-content:stretch}.rtable td.rt-actions:before{display:none}.rtable td.rt-actions .btn,.rtable td.rt-actions button{flex:1;margin-left:0}.rtable td[colspan]{justify-content:center;text-align:center}.rtable td[colspan]:before{display:none}}@media (max-width: 480px){.stat-grid{grid-template-columns:1fr}.card{padding:14px 16px}.flex-between{flex-wrap:wrap}}.rich-editor{border:1.5px solid var(--border);border-radius:var(--radius-sm);transition:border-color var(--transition-dur) var(--transition-ease)}.rich-editor:focus-within{border-color:var(--primary-light);box-shadow:0 0 0 3px #2d5a8e14}.rich-editor-toolbar{background:var(--surface-alt);border-bottom:1px solid var(--border);padding:6px 8px;display:flex;flex-wrap:wrap;gap:2px;border-radius:calc(var(--radius-sm) - 1px) calc(var(--radius-sm) - 1px) 0 0}.rich-editor-toolbar button{background:transparent;border:none;padding:4px 10px;border-radius:4px;font-size:.85rem;cursor:pointer;color:var(--text-secondary);transition:background-color var(--transition-dur) var(--transition-ease),color var(--transition-dur) var(--transition-ease);font-family:inherit;font-weight:500}.rich-editor-toolbar button:hover{background:var(--border);color:var(--text)}.rich-editor-toolbar .divider{width:1px;background:var(--border);margin:2px 4px}.rich-editor-content{padding:10px 14px;min-height:80px;outline:2px solid transparent;font-size:.875rem;line-height:1.6}.rich-editor-content:focus-visible{outline:2px solid var(--primary-light)}.chart-container{background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--border);overflow:hidden}.audit-method-tag{display:inline-block;padding:1px 7px;border-radius:4px;font-size:.75rem;font-weight:700;color:#fff;letter-spacing:.02em}.warn-banner{border-left:4px solid var(--warning);background:var(--warning-light)}.quick-zone{background:linear-gradient(135deg,var(--primary-bg),#eef2ff);border:1px dashed var(--primary-light)}
