*{box-sizing:border-box;margin:0;padding:0}:root{--color-bg-primary:#f8fafc;--color-bg-secondary:#fff;--color-bg-tertiary:#f1f5f9;--color-accent:#4f6bf6;--color-accent-hover:#3d57dc;--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--color-text-primary:#1e293b;--color-text-secondary:#64748b;--color-border:#e2e8f0;--shadow-lg:0 8px 32px #00000014;--transition:all .2s ease}body{background:var(--color-bg-primary);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}#root{min-height:100vh}.login-container{background:linear-gradient(135deg,#f0f4ff 0%,#e8eeff 50%,#f5f0ff 100%);justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.login-container:before{content:"";background:radial-gradient(circle,#4f6bf614 0%,#0000 70%);border-radius:50%;width:600px;height:600px;animation:8s ease-in-out infinite float;position:absolute;top:-200px;right:-100px}.login-container:after{content:"";background:radial-gradient(circle,#8b5cf60f 0%,#0000 70%);border-radius:50%;width:400px;height:400px;animation:10s ease-in-out infinite reverse float;position:absolute;bottom:-100px;left:-50px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-30px)}}.login-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);width:420px;box-shadow:var(--shadow-lg);z-index:1;background:#ffffffe6;border:1px solid #4f6bf61a;border-radius:20px;padding:48px 40px;position:relative}.login-card h1{text-align:center;background:linear-gradient(135deg,#4f6bf6,#1e293b);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:8px;font-size:24px;font-weight:700}.login-card .subtitle{text-align:center;color:var(--color-text-secondary);margin-bottom:36px;font-size:14px}.app-layout{min-height:100vh}.app-sider{border-right:1px solid var(--color-border);background:var(--color-bg-secondary)!important}.sider-logo{border-bottom:1px solid var(--color-border);justify-content:center;align-items:center;height:64px;padding:0 16px;display:flex}.sider-logo h2{background:linear-gradient(135deg,#4f6bf6,#8b5cf6);-webkit-text-fill-color:transparent;white-space:nowrap;-webkit-background-clip:text;background-clip:text;font-size:16px;font-weight:700}.app-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:0 24px;display:flex;background:var(--color-bg-secondary)!important}.app-header .project-selector{font-size:16px;font-weight:600}.app-content{background:var(--color-bg-primary);min-height:calc(100vh - 64px);padding:24px}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-header h1{color:var(--color-text-primary);font-size:22px;font-weight:700}.stat-card{background:var(--color-bg-tertiary);border:1px solid var(--color-border);transition:var(--transition);border-radius:12px;padding:20px}.stat-card:hover{border-color:var(--color-accent);transform:translateY(-2px);box-shadow:0 0 20px #4f6bf61a}.stat-card .stat-label{color:var(--color-text-secondary);margin-bottom:8px;font-size:13px}.stat-card .stat-value{color:var(--color-text-primary);font-size:28px;font-weight:700}.review-layout{gap:24px;height:calc(100vh - 230px);display:flex}.review-quality-strip{grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px;margin-bottom:16px;display:grid}.quality-item{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;padding:12px 14px}.quality-item span{color:var(--color-text-secondary);margin-bottom:4px;font-size:12px;display:block}.quality-item strong{color:var(--color-text-primary);font-size:22px;line-height:1}.quality-item.warning strong{color:var(--color-warning)}.quality-item.danger strong{color:var(--color-danger)}@media (width<=1180px){.review-quality-strip{grid-template-columns:repeat(3,minmax(120px,1fr))}.review-layout{flex-direction:column;height:auto}.review-detail-section{width:100%}.review-table-scroll{min-height:360px;max-height:70vh}}.review-table-section{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;flex:1;min-width:0;min-height:0;padding:12px;display:flex;overflow:hidden}.review-table-scroll{-webkit-overflow-scrolling:touch;flex:1;min-height:0;overflow:auto}.review-table-scroll .ant-table-wrapper{min-width:max-content}.review-detail-section{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:12px;flex-shrink:0;width:480px;padding:24px;overflow-y:auto}.detail-group{margin-bottom:20px}.detail-group-title{color:var(--color-accent);border-bottom:1px solid var(--color-border);margin-bottom:12px;padding-bottom:8px;font-size:14px;font-weight:600}.detail-field{margin-bottom:12px}.detail-field label{color:var(--color-text-secondary);margin-bottom:4px;font-size:12px;display:block}.status-pending{color:var(--color-warning)}.status-approved{color:var(--color-success)}.status-uncertain{color:#fb923c}.status-missing{color:var(--color-danger)}.status-deleted{color:#6b7280}.status-modified{color:var(--color-accent)}.upload-area{background:var(--color-bg-tertiary);border:2px dashed var(--color-border);text-align:center;transition:var(--transition);cursor:pointer;border-radius:12px;padding:40px}.upload-area:hover{border-color:var(--color-accent);background:#4f6bf60d}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-bg-primary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#cbd5e1}.ant-table-wrapper .ant-table{background:0 0}.ant-btn-primary{transition:var(--transition);background:linear-gradient(135deg,#4f6bf6,#6b82ff)!important;border:none!important;box-shadow:0 4px 12px #4f6bf640!important}.ant-btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #4f6bf666!important}.ant-input,.ant-input-password,.ant-select-selector{border-color:var(--color-border)!important}.ant-input:focus,.ant-input-password:focus,.ant-input-affix-wrapper-focused{border-color:var(--color-accent)!important;box-shadow:0 0 0 2px #4f6bf61a!important}
