:root{--primary-color: #4f46e5;--primary-hover: #4338ca;--primary-light: #eef2ff;--success-color: #10b981;--warning-color: #f59e0b;--danger-color: #ef4444;--text-primary: #1f2937;--text-secondary: #6b7280;--text-tertiary: #9ca3af;--bg-page: #f8fafc;--bg-card: #ffffff;--border-color: #e5e7eb;--border-light: #f1f5f9;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .06);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;overflow:hidden;color:var(--text-primary);background:var(--bg-page)}#root{height:100vh;overflow:hidden}.ant-layout{height:100%}*:focus-visible{outline:2px solid rgba(79,70,229,.35);outline-offset:2px;border-radius:2px}button:focus-visible,a:focus-visible{outline:2px solid rgba(79,70,229,.35);outline-offset:2px}.ant-menu-item{border-radius:var(--radius-md)!important;margin:2px 8px!important;transition:all .2s ease!important}.ant-menu-item:hover{background-color:var(--primary-light)!important;color:var(--primary-color)!important}.ant-menu-item-selected{background-color:var(--primary-light)!important;color:var(--primary-color)!important;font-weight:600;position:relative}.ant-menu-item-selected:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:60%;background:var(--primary-color);border-radius:0 3px 3px 0}.ant-layout-sider{transition:all .25s cubic-bezier(.4,0,.2,1)!important}.ant-layout-content{display:flex;flex-direction:column;min-height:0}.ant-layout-content>div{flex:1;min-height:0}.ant-btn{transition:all .2s ease!important}.ant-card{box-shadow:var(--shadow-sm);transition:box-shadow .25s ease,transform .25s ease!important}.ant-card:hover{box-shadow:var(--shadow-md)}.ant-table-thead>tr>th{background:#f9fafb!important;font-weight:600!important;color:var(--text-secondary)!important;font-size:13px!important}.ant-table-tbody>tr>td{transition:background .15s ease!important}.ant-input,.ant-input-affix-wrapper,.ant-select-selector{transition:all .2s ease!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}.todo-card{display:flex;align-items:center;gap:12px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:10px 14px;margin-bottom:8px;transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}.todo-card:hover{border-color:var(--border-color);box-shadow:var(--shadow-md);transform:translateY(-1px)}.todo-card-overdue{background:#fef2f2;border-color:#fecaca;box-shadow:inset 3px 0 0 0 var(--danger-color)}.todo-card-approaching{background:#fffbeb;border-color:#fde68a;box-shadow:inset 3px 0 0 0 var(--warning-color)}.todo-card-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.todo-card-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.task-row-overdue>td{background:#fef2f0!important}@media (max-width: 768px){.ant-layout-sider{display:none}.ant-modal{max-width:100vw!important;margin:0!important;padding:0!important}.ant-modal-content{border-radius:0!important;min-height:100vh}.ant-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.ant-card{margin-bottom:8px}.ant-input-affix-wrapper{max-width:140px!important}.ant-layout-header{padding:0 12px!important;gap:8px!important}.ant-layout-content{padding:12px!important}.ant-drawer-body .ant-menu{width:100%}.overview-stat-block{flex:1 1 100%!important;min-width:unset!important}}@media (max-width: 992px) and (min-width: 769px){.ant-layout-content{padding:16px!important}}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-transition{animation:pageFadeIn .3s ease-in-out;min-height:100%}@keyframes skeletonPulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.skeleton-loading{animation:skeletonPulse 1.5s ease-in-out infinite}
