:root{--latte:#faf6f1;--cream:#f3ece2;--foam:#ede4d8;--caramel:#d4c4ae;--mocha:#b8a48e;--espresso:#6b5b4e;--dark-roast:#4a3c31;--black-coffee:#2c2218;--bg-primary:var(--latte);--bg-secondary:var(--cream);--bg-card:#fff;--bg-hover:var(--foam);--bg-sider:var(--black-coffee);--bg-sider-hover:#ffffff0f;--bg-sider-active:#ffffff1a;--text-primary:var(--black-coffee);--text-secondary:var(--espresso);--text-light:var(--mocha);--text-sider:#ffffff73;--text-sider-active:#ffffffeb;--accent:#9c7b5c;--accent-light:#b89a7a;--accent-bg:#9c7b5c0f;--accent-hover:#86694d;--border:#e8dfd5;--border-light:#f0e8e0;--success:#6b9e78;--success-bg:#6b9e780f;--warning:#d4a042;--warning-bg:#d4a0420f;--danger:#c27171;--danger-bg:#c271710f;--info:var(--espresso);--shadow-sm:0 1px 3px #2c22180a;--shadow-md:0 4px 12px #2c22180f;--shadow-lg:0 12px 32px #2c221814;--shadow-xl:0 20px 48px #2c22181f;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-pill:100px;--ease-smooth:cubic-bezier(.4, 0, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--font-serif:"DM Serif Display", Georgia, "Noto Serif SC", serif;--font-body:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei UI", "Segoe UI", sans-serif}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes breathe{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.6}body:before{content:"";opacity:.3;pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg width='40' height='40' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");position:fixed;inset:0}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--caramel);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--mocha)}.ant-btn{transition:all .2s var(--ease-smooth);font-weight:500;border-radius:var(--radius-pill)!important}.ant-btn-primary{box-shadow:none}.ant-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 14px #9c7b5c4d}.ant-btn-default:hover{border-color:var(--accent)!important;color:var(--accent)!important}.ant-card{transition:all .25s var(--ease-smooth);border-radius:var(--radius-md)!important;border:1px solid var(--border)!important;box-shadow:var(--shadow-sm)!important}.ant-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)!important}.ant-table{border-radius:var(--radius-md)!important}.ant-table-thead>tr>th{text-transform:uppercase;letter-spacing:.8px;font-size:11px;font-weight:600;background:var(--bg-secondary)!important;color:var(--text-secondary)!important}.ant-modal .ant-modal-content{overflow:hidden;border-radius:var(--radius-lg)!important}.ant-modal-mask{-webkit-backdrop-filter:blur(6px)}.ant-modal .ant-modal-header{border-bottom:1px solid var(--border-light)}.ant-drawer .ant-drawer-content{border-radius:var(--radius-lg) 0 0 var(--radius-lg)!important}.ant-tag{letter-spacing:.2px;padding:0 10px;font-size:11px;font-weight:500;line-height:20px;border-radius:var(--radius-pill)!important;border:none!important}.ant-progress-bg,.ant-progress-inner{border-radius:2px!important}.ant-message-notice-content{box-shadow:var(--shadow-lg);border-radius:var(--radius-pill)!important}.ant-input,.ant-input-affix-wrapper,.ant-select-selector{border-radius:var(--radius-sm)!important;transition:all .2s var(--ease-smooth)!important}.ant-input:focus,.ant-input-affix-wrapper-focused,.ant-select-focused .ant-select-selector{box-shadow:0 0 0 3px #9c7b5c14!important}.ant-picker{border-radius:var(--radius-sm)!important}.page-container{z-index:1;height:100%;padding:32px 40px;position:relative;overflow-y:auto}.page-header{animation:fadeUp .4s var(--ease-smooth) both;justify-content:space-between;align-items:center;margin-bottom:32px;display:flex}.page-header h2{font-family:var(--font-serif);color:var(--text-primary);letter-spacing:-.2px;margin:0;font-size:20px;font-weight:400}.page-header .subtitle{color:var(--text-light);letter-spacing:.2px;margin-top:4px;font-size:13px;font-weight:400}.stat-cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:32px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;transition:all .25s var(--ease-smooth);animation:fadeUp .5s var(--ease-smooth) both;padding:20px 18px;position:relative}.stat-card:first-child{animation-delay:50ms}.stat-card:nth-child(2){animation-delay:.1s}.stat-card:nth-child(3){animation-delay:.15s}.stat-card:nth-child(4){animation-delay:.2s}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.stat-card .stat-value{font-family:var(--font-serif);color:var(--text-primary);letter-spacing:-.5px;font-size:30px;font-weight:400;line-height:1}.stat-card .stat-suffix{font-family:var(--font-body);color:var(--text-light);margin-left:2px;font-size:16px;font-weight:400}.stat-card .stat-label{color:var(--text-light);text-transform:uppercase;letter-spacing:1px;margin-top:8px;font-size:11px;font-weight:600}.section-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);animation:fadeUp .5s var(--ease-smooth) both;padding:24px;animation-delay:.25s}.section-title{font-family:var(--font-serif);color:var(--text-primary);letter-spacing:-.2px;margin-bottom:20px;font-size:15px;font-weight:400}.empty-state{color:var(--text-light);flex-direction:column;justify-content:center;align-items:center;padding:64px 20px;display:flex}.empty-state .anticon{opacity:.18;margin-bottom:16px;font-size:36px}.empty-state p{color:var(--text-secondary);margin-bottom:16px;font-size:14px}.priority-tag{font-size:11px;font-weight:500}.filter-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);animation:fadeUp .4s var(--ease-smooth) both;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px;padding:12px 16px;animation-delay:.1s;display:flex}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:all .25s var(--ease-smooth);animation:fadeUp .5s var(--ease-smooth) both;position:relative;overflow:hidden}.project-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.app-layout{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{border-bottom:1px solid var(--border,#e8dfd5);z-index:100;justify-content:space-between;align-items:center;height:64px;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #2c22180a;background:#fff!important;padding:0 32px!important;line-height:normal!important}.header-left{flex:auto;align-items:center;gap:28px;min-width:0;display:flex}.header-logo{cursor:pointer;flex-shrink:0;align-items:center;gap:10px;transition:opacity .2s;display:flex}.header-logo:hover{opacity:.75}.logo-icon{width:32px;height:32px;color:var(--accent,#9c7b5c);letter-spacing:1px;background:#9c7b5c1a;border:1px solid #9c7b5c26;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.logo-text{font-family:var(--font-serif,"DM Serif Display", Georgia, serif);color:var(--dark-roast,#4a3c31);letter-spacing:-.3px;white-space:nowrap;font-size:18px;font-weight:400}.nav-tabs{flex-wrap:nowrap;gap:3px;padding:4px 0;display:flex}.nav-tab{color:var(--mocha,#b8a48e);cursor:pointer;letter-spacing:.01em;white-space:nowrap;background:0 0;border:none;border-radius:100px;flex-shrink:0;align-items:center;gap:6px;padding:7px 15px;font-family:inherit;font-size:13px;font-weight:500;line-height:1;transition:all .25s cubic-bezier(.4,0,.2,1);display:inline-flex}.nav-tab .anticon{font-size:14px}.nav-tab:hover{background:var(--cream,#f3ece2);color:var(--dark-roast,#4a3c31)}.nav-tab.active{background:var(--dark-roast,#4a3c31);color:var(--cream,#f3ece2);box-shadow:0 2px 8px #2c22181a}.nav-tab.active .anticon{opacity:1}.header-right{border-left:1.5px solid var(--border,#e8dfd5);flex-shrink:0;align-items:center;gap:12px;margin-left:12px;padding-left:16px;display:flex}.user-badge{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:100px;align-items:center;gap:8px;padding:5px 10px 5px 6px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.user-badge:hover{background:#0000000a}.user-badge:active{background:#0000000f}.user-badge-avatar{flex-shrink:0;color:var(--accent,#9c7b5c)!important;background:#9c7b5c1f!important}.user-badge-name{white-space:nowrap;color:var(--dark-roast,#4a3c31)!important;font-size:13px!important;font-weight:600!important}.user-badge-arrow{margin-left:2px;transition:transform .2s;color:var(--mocha,#b8a48e)!important;font-size:10px!important}.user-menu-header{pointer-events:none;align-items:center;gap:10px;padding:4px 0;display:flex}.user-menu-avatar{flex-shrink:0;color:var(--accent,#9c7b5c)!important;background:#9c7b5c26!important}.user-menu-name{color:var(--text-primary,#2c2218);align-items:center;gap:6px;font-size:14px;font-weight:700;display:flex}.user-menu-role{color:var(--mocha,#b8a48e);margin-top:2px;font-size:12px}.admin-badge{background:var(--accent,#9c7b5c);color:#fff;letter-spacing:.3px;border-radius:100px;padding:1px 7px;font-size:10px;font-weight:600}.app-content{background:var(--bg-primary,#faf6f1);flex:1;position:relative;overflow:hidden}@media (width<=1400px){.header-left{gap:20px}.nav-tab{padding:7px 12px;font-size:12.5px}}@media (width<=1200px){.app-header{padding:0 18px!important}.header-left{gap:14px}.logo-text{font-size:16px}.nav-tab{padding:6px 10px;font-size:12px}.header-right{gap:8px}}.login-page{background:#2c2218;justify-content:center;align-items:center;height:100vh;display:flex;position:relative;overflow:hidden}.login-bg{background:radial-gradient(at 30%,#9c7b5c1a 0%,#0000 60%),radial-gradient(at 70% 30%,#b89a7a0f 0%,#0000 50%);position:absolute;inset:0}.login-card{z-index:1;width:400px;animation:.45s cubic-bezier(.34,1.56,.64,1) both scaleIn;position:relative;border:1px solid #ffffff0f!important;border-radius:20px!important;padding:16px!important;box-shadow:0 24px 64px #0006!important}.login-header{text-align:center;margin-bottom:36px}.login-logo{color:#9c7b5c;letter-spacing:2px;width:52px;height:52px;font-size:16px;font-weight:600;font-family:var(--font-serif);background:#9c7b5c1a;border:1px solid #9c7b5c26;border-radius:14px;justify-content:center;align-items:center;margin-bottom:20px;display:inline-flex}.login-title{color:var(--text-primary);font-family:var(--font-serif);letter-spacing:-.3px;margin:0 0 4px!important;font-weight:400!important}.login-subtitle{color:var(--text-light);letter-spacing:3px;text-transform:uppercase;font-size:10px;font-weight:500}.login-form{flex-direction:column;gap:14px;display:flex}.login-form .ant-input-affix-wrapper{height:46px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:10px!important}.login-form .ant-input-affix-wrapper:focus,.login-form .ant-input-affix-wrapper-focused{box-shadow:0 0 0 3px #9c7b5c1a!important}.login-btn{margin-top:6px;height:46px!important;box-shadow:none!important;border-radius:100px!important;font-size:15px!important;font-weight:500!important;transition:all .25s cubic-bezier(.4,0,.2,1)!important}.login-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px #9c7b5c4d!important}.dingtalk-btn{justify-content:center;align-items:center;gap:8px;color:#fff!important;height:46px!important;box-shadow:none!important;background:#3296fa!important;border-color:#3296fa!important;border-radius:100px!important;font-size:15px!important;font-weight:500!important;transition:all .25s cubic-bezier(.4,0,.2,1)!important;display:flex!important}.dingtalk-btn:hover{transform:translateY(-1px);background:#1a86f0!important;border-color:#1a86f0!important;box-shadow:0 6px 20px #3296fa40!important}.login-footer{text-align:center;letter-spacing:.5px;margin-top:28px;font-size:11px}.kanban-board{gap:14px;height:calc(100vh - 140px);padding:0 4px 16px;display:flex;overflow-x:auto}.kanban-column{background:var(--cream);border-radius:var(--radius-md);border:1px solid var(--border-light);min-width:270px;max-width:310px;animation:fadeUp .4s var(--ease-smooth) both;flex-direction:column;flex-shrink:0;display:flex}.kanban-column:first-child{animation-delay:0s}.kanban-column:nth-child(2){animation-delay:40ms}.kanban-column:nth-child(3){animation-delay:80ms}.kanban-column:nth-child(4){animation-delay:.12s}.kanban-column:nth-child(5){animation-delay:.16s}.kanban-column:nth-child(6){animation-delay:.2s}.kanban-column-header{border-bottom:1px solid var(--border-light);border-radius:var(--radius-md) var(--radius-md) 0 0;background:linear-gradient(135deg,#9c7b5c0a 0%,#0000 100%);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px;font-size:12px;display:flex}.kanban-column-header .column-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.6px;align-items:center;gap:8px;font-size:11px;font-weight:600;display:flex}.kanban-column-header .column-title .status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:2.5s ease-in-out infinite breathe}.kanban-column-header .column-title .count-badge{color:var(--accent);border-radius:var(--radius-pill);text-align:center;background:#9c7b5c1a;min-width:22px;padding:1px 8px;font-size:11px;font-weight:600;line-height:18px}.kanban-column-body{flex-direction:column;flex:1;gap:6px;padding:8px;display:flex;overflow-y:auto}.kanban-column-body .drop-placeholder{border:1.5px dashed var(--caramel);border-radius:var(--radius-sm);min-height:56px;color:var(--text-light);transition:all .2s var(--ease-smooth);justify-content:center;align-items:center;font-size:12px;display:flex}.task-card{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:grab;transition:all .2s var(--ease-smooth);-webkit-user-select:none;user-select:none;animation:fadeUp .35s var(--ease-smooth) both;background:#fff;padding:14px 16px}.task-card:hover{border-color:var(--caramel);transform:translateY(-2px);box-shadow:0 4px 12px #2c22180f}.task-card:active{cursor:grabbing;box-shadow:var(--shadow-lg);transform:rotate(1.5deg)scale(1.02)}.task-card.dragging{opacity:.3;transform:scale(.98)}.task-card .task-title{color:var(--text-primary);align-items:flex-start;gap:8px;margin-bottom:8px;font-size:13px;font-weight:500;line-height:1.5;display:flex}.task-card .task-title .priority-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:6px}.task-card .task-meta{color:var(--text-light);flex-wrap:wrap;align-items:center;gap:10px;font-size:11px;display:flex}.task-card .task-meta .meta-item{align-items:center;gap:3px;display:flex}.task-card .task-tags{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.task-card .task-tags .ant-tag{border-radius:var(--radius-pill);background:var(--foam);color:var(--text-secondary);letter-spacing:.2px;border:none;margin:0;padding:0 7px;font-size:10px;line-height:18px}
