:root{--orange: #F47920;--orange-light: #FFF4EC;--orange-mid: #FDE8D4;--bg: #F5F6FA;--white: #FFFFFF;--border: #E8EAF0;--text: #1A1A2E;--sub: #6B7280;--purple: #6B4EFF;--blue: #2563EB;--green: #059669;--red: #DC2626;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);--shadow-md: 0 4px 12px rgba(16, 24, 40, .08);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .12);--ring: 0 0 0 3px rgba(244, 121, 32, .18);--ease: cubic-bezier(.16, 1, .3, 1);--dur: .22s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{min-height:100vh}::selection{background:var(--orange-mid);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:#D4D7E0 transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#d4d7e0;border-radius:8px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#b9bdcc;background-clip:content-box}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:none}}@keyframes growWidth{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes pulseSoft{0%,to{opacity:1}50%{opacity:.55}}.page-enter{animation:fadeInUp .4s var(--ease) both}.fade-in{animation:fadeIn .35s var(--ease) both}.scale-in{animation:scaleIn .3s var(--ease) both}.slide-in{animation:slideInLeft .3s var(--ease) both}.stagger>*{animation:fadeInUp .45s var(--ease) both}.stagger>*:nth-child(1){animation-delay:.02s}.stagger>*:nth-child(2){animation-delay:.06s}.stagger>*:nth-child(3){animation-delay:.1s}.stagger>*:nth-child(4){animation-delay:.14s}.stagger>*:nth-child(5){animation-delay:.18s}.stagger>*:nth-child(6){animation-delay:.22s}.card{transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease);box-shadow:var(--shadow-sm)}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#dadde8!important}.stat-card{position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:currentColor;opacity:0;transition:opacity var(--dur) var(--ease)}.stat-card:hover:after{opacity:.5}.btn{transition:transform .12s var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease),opacity var(--dur) var(--ease)}.btn:not(:disabled):hover{box-shadow:var(--shadow-md);filter:brightness(1.04)}.btn:not(:disabled):active{transform:translateY(1px) scale(.985)}.btn:disabled{cursor:not-allowed}.nav-item{transition:background var(--dur) var(--ease),color var(--dur) var(--ease),padding-left var(--dur) var(--ease)}.nav-item:hover{background:var(--orange-light)!important;color:var(--orange)!important}.tab-btn{transition:color var(--dur) var(--ease);position:relative}.tab-btn:after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:2px;background:var(--orange);border-radius:2px;transform:scaleX(0);transform-origin:center;transition:transform var(--dur) var(--ease)}.tab-btn:hover:after{transform:scaleX(.6);opacity:.5}.tab-btn.tab-active:after{transform:scaleX(1);opacity:1}.tab-btn:hover{color:var(--text)!important}.data-row{transition:background var(--dur) var(--ease)}.data-row:hover{background:var(--orange-light)!important}.field-input{transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.field-input:focus,.field-input:focus-visible{border-color:var(--orange)!important;box-shadow:var(--ring);outline:none}.drop-zone{transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.drop-zone:hover{border-color:var(--orange)!important;background:var(--orange-light)!important;transform:translateY(-2px);box-shadow:var(--shadow-md)}.drop-zone.dragging{transform:scale(1.01);box-shadow:var(--shadow-lg)}.dist-bar{transform-origin:left center;animation:growWidth .7s var(--ease) both}.dist-track{transition:box-shadow var(--dur) var(--ease)}.dist-track:hover{box-shadow:var(--shadow-sm)}.pill{transition:transform var(--dur) var(--ease)}.pill:hover{transform:translateY(-1px)}.spinner{display:inline-block;width:15px;height:15px;border:2px solid var(--orange-mid);border-top-color:var(--orange);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}.skeleton{background:linear-gradient(90deg,#eef0f5,#f7f8fb,#eef0f5 400px);background-size:800px 100%;animation:shimmer 1.3s infinite linear;border-radius:6px}.skeleton-line{height:12px;border-radius:6px}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-35%}to{left:100%;right:-35%}}.loading-bar{position:relative;height:3px;width:100%;background:var(--orange-light);overflow:hidden}.loading-bar:before{content:"";position:absolute;top:0;bottom:0;left:-35%;right:100%;background:var(--orange);animation:indeterminate 1.15s var(--ease) infinite}.link-btn{transition:background var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.link-btn:hover{box-shadow:var(--shadow-sm)}.stat-cards{display:flex;gap:16px;margin-bottom:24px}.upload-zones{display:flex;gap:16px;margin-bottom:20px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.footer-inner{display:flex;justify-content:space-between;align-items:center}@media (max-width: 900px){.stat-cards{flex-wrap:wrap}.stat-cards>div{flex:1 1 calc(50% - 8px)!important;min-width:calc(50% - 8px)!important}}@media (max-width: 768px){.upload-zones{flex-direction:column}.footer-inner{flex-direction:column;gap:4px;text-align:center}}@media (max-width: 480px){.stat-cards>div{flex:1 1 100%!important;min-width:100%!important}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
