@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Noto+Sans+TC:wght@300;400;500;600;700;900&family=Noto+Sans+JP:wght@300;400;500;700&display=swap";:root{--bg-primary:#0a0e1a;--bg-secondary:#111827;--bg-tertiary:#1a2235;--bg-card:#111827cc;--bg-glass:#ffffff08;--bg-glass-hover:#ffffff0f;--accent-primary:#667eea;--accent-secondary:#764ba2;--accent-gradient:linear-gradient(135deg, #667eea 0%, #764ba2 100%);--accent-gradient-light:linear-gradient(135deg, #667eea26 0%, #764ba226 100%);--accent-gold:#f6ad55;--accent-emerald:#48bb78;--accent-cyan:#4fd1c5;--accent-rose:#f56565;--text-primary:#f7fafc;--text-secondary:#a0aec0;--text-muted:#718096;--text-accent:#667eea;--border-subtle:#ffffff0f;--border-medium:#ffffff1a;--border-accent:#667eea4d;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 10px 40px #00000080;--shadow-glow:0 0 30px #667eea26;--sidebar-width:260px;--header-height:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--font-primary:"Inter", "Noto Sans TC", "Noto Sans JP", -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--status-active:#48bb78;--status-warning:#ecc94b;--status-danger:#f56565;--status-info:#4299e1;--status-muted:#718096}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-primary);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;overflow-x:hidden}#root{min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff3}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 5px #667eea4d}50%{box-shadow:0 0 20px #667eea99}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes blink-urgent{0%,to{opacity:1}50%{opacity:.4}}.animate-in{animation:.4s ease-out forwards fadeIn}.animate-scale{animation:.3s ease-out forwards fadeInScale}.login-container{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.login-bg-pattern{background:radial-gradient(at 20%,#667eea14 0%,#0000 50%),radial-gradient(at 80% 20%,#764ba214 0%,#0000 50%),radial-gradient(at 50% 80%,#4fd1c50d 0%,#0000 50%);position:absolute;inset:0}.login-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);width:420px;box-shadow:var(--shadow-lg), var(--shadow-glow);padding:48px;animation:.5s ease-out fadeInScale;position:relative}.login-logo{text-align:center;margin-bottom:32px}.login-logo h1{background:var(--accent-gradient);-webkit-text-fill-color:transparent;letter-spacing:-.5px;-webkit-background-clip:text;background-clip:text;font-size:28px;font-weight:800}.login-logo p{color:var(--text-secondary);margin-top:8px;font-size:14px}.form-group{margin-bottom:20px}.form-group label{color:var(--text-secondary);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.form-input{background:var(--bg-glass);border:1px solid var(--border-medium);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);font-size:14px;font-family:var(--font-primary);transition:all var(--transition-fast);outline:none;padding:12px 16px}.form-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #667eea1a}.form-input::placeholder{color:var(--text-muted)}select.form-input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23718096' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}textarea.form-input{resize:vertical;min-height:100px;line-height:1.6}.btn{border-radius:var(--radius-sm);font-family:var(--font-primary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:none;outline:none;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 2px 10px #667eea4d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 20px #667eea80}.btn-secondary{background:var(--bg-glass);color:var(--text-secondary);border:1px solid var(--border-medium)}.btn-secondary:hover{background:var(--bg-glass-hover);color:var(--text-primary);border-color:var(--border-accent)}.btn-danger{color:var(--status-danger);background:#f5656526;border:1px solid #f5656533}.btn-danger:hover{background:#f5656540}.btn-success{color:var(--status-active);background:#48bb7826;border:1px solid #48bb7833}.btn-success:hover{background:#48bb7840}.btn-ghost{color:var(--text-secondary);background:0 0;padding:8px 12px}.btn-ghost:hover{background:var(--bg-glass);color:var(--text-primary)}.btn-sm{padding:6px 14px;font-size:12px}.btn-lg{padding:14px 28px;font-size:16px}.btn-full{width:100%}.btn-icon{border-radius:var(--radius-sm);padding:8px}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border-subtle);z-index:100;height:100vh;transition:transform var(--transition-normal);flex-direction:column;display:flex;position:fixed;top:0;left:0;overflow-y:auto}.sidebar-brand{border-bottom:1px solid var(--border-subtle);padding:20px 24px}.sidebar-brand h2{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:20px;font-weight:800}.sidebar-brand span{color:var(--text-muted);margin-top:4px;font-size:11px;display:block}.sidebar-nav{flex:1;padding:12px 0}.sidebar-section{margin-bottom:8px;padding:0 12px}.sidebar-section-title{text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);padding:16px 12px 8px;font-size:10px;font-weight:700}.sidebar-link{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition-fast);cursor:pointer;align-items:center;gap:12px;padding:10px 12px;font-size:13px;font-weight:500;text-decoration:none;display:flex;position:relative}.sidebar-link:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.sidebar-link.active{background:var(--accent-gradient-light);color:var(--accent-primary)}.sidebar-link.active:before{content:"";background:var(--accent-gradient);border-radius:0 3px 3px 0;width:3px;height:20px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.sidebar-link .badge{border-radius:10px;margin-left:auto;padding:2px 8px;font-size:10px;font-weight:700}.badge-warning{color:var(--status-warning);background:#ecc94b26}.badge-danger{color:var(--status-danger);background:#f5656526;animation:2s ease-in-out infinite blink-urgent}.badge-info{color:var(--status-info);background:#4299e126}.main-content{margin-left:var(--sidebar-width);flex:1;min-height:100vh}.main-header{height:var(--header-height);border-bottom:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:50;background:#0a0e1acc;justify-content:space-between;align-items:center;padding:0 32px;display:flex;position:sticky;top:0}.main-header h1{font-size:20px;font-weight:700}.header-actions{align-items:center;gap:12px;display:flex}.page-content{max-width:1600px;padding:24px 32px}.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all var(--transition-normal)}.card:hover{border-color:var(--border-medium)}.card-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.card-header h3{font-size:16px;font-weight:600}.card-body{padding:24px}.card-footer{border-top:1px solid var(--border-subtle);padding:16px 24px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);transition:all var(--transition-normal);align-items:flex-start;gap:16px;padding:24px;animation:.4s ease-out backwards fadeIn;display:flex}.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:nth-child(5){animation-delay:.25s}.stat-card:nth-child(6){animation-delay:.3s}.stat-card:hover{border-color:var(--border-accent);box-shadow:var(--shadow-glow);transform:translateY(-2px)}.stat-icon{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.stat-icon.blue{color:var(--accent-primary);background:#667eea26}.stat-icon.green{color:var(--status-active);background:#48bb7826}.stat-icon.amber{color:var(--accent-gold);background:#f6ad5526}.stat-icon.red{color:var(--status-danger);background:#f5656526}.stat-icon.cyan{color:var(--accent-cyan);background:#4fd1c526}.stat-icon.purple{color:var(--accent-secondary);background:#764ba226}.stat-content{flex:1}.stat-value{margin-bottom:4px;font-size:28px;font-weight:800;line-height:1}.stat-label{color:var(--text-secondary);font-size:13px}.table-container{border-radius:var(--radius-md);overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);border-bottom:1px solid var(--border-subtle);white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:700}td{border-bottom:1px solid var(--border-subtle);vertical-align:middle;padding:14px 16px;font-size:13px}tr{transition:background var(--transition-fast)}tbody tr:hover{background:var(--bg-glass-hover)}.status-badge{white-space:nowrap;border-radius:20px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.status-badge:before{content:"";border-radius:50%;width:6px;height:6px}.status-active:before{background:var(--status-active)}.status-active{color:var(--status-active);background:#48bb781f}.status-warning:before{background:var(--status-warning)}.status-warning{color:var(--status-warning);background:#ecc94b1f}.status-danger:before{background:var(--status-danger);animation:1.5s infinite blink-urgent}.status-danger{color:var(--status-danger);background:#f565651f}.status-info:before{background:var(--status-info)}.status-info{color:var(--status-info);background:#4299e11f}.status-muted:before{background:var(--status-muted)}.status-muted{color:var(--status-muted);background:#7180961f}.priority-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:6px;align-items:center;gap:4px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.priority-critical{color:#fc8181;background:#f5656526;border:1px solid #f5656533}.priority-high{color:#fbd38d;background:#f6ad5526;border:1px solid #f6ad5533}.priority-medium{color:#90cdf4;background:#4299e126;border:1px solid #4299e133}.priority-low{color:#9ae6b4;background:#48bb7826;border:1px solid #48bb7833}.grid-2{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:20px;display:grid}@media (width<=1200px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.sidebar{transform:translate(-100%)}.main-content{margin-left:0}.page-content{padding:16px}.stats-grid{grid-template-columns:1fr}}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0009;justify-content:center;align-items:center;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--bg-secondary);border:1px solid var(--border-medium);border-radius:var(--radius-lg);width:100%;max-width:600px;max-height:80vh;box-shadow:var(--shadow-lg);animation:.3s ease-out fadeInScale;overflow-y:auto}.modal-lg{max-width:800px}.modal-xl{max-width:1000px}.modal-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-header h3{font-size:18px;font-weight:700}.modal-body{padding:24px}.modal-footer{border-top:1px solid var(--border-subtle);justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.tabs{border-bottom:1px solid var(--border-subtle);gap:4px;margin-bottom:24px;display:flex;overflow-x:auto}.tab{color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);font-size:13px;font-weight:500;font-family:var(--font-primary);background:0 0;border:none;padding:12px 20px;position:relative}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent-primary)}.tab.active:after{content:"";background:var(--accent-gradient);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.timeline{padding-left:24px;position:relative}.timeline:before{content:"";background:var(--border-subtle);width:2px;position:absolute;top:0;bottom:0;left:7px}.timeline-item{padding-bottom:24px;animation:.4s ease-out backwards fadeIn;position:relative}.timeline-item:before{content:"";border:2px solid var(--accent-primary);background:var(--bg-primary);border-radius:50%;width:12px;height:12px;position:absolute;top:4px;left:-21px}.timeline-item.urgent:before{border-color:var(--status-danger);background:var(--status-danger);animation:2s infinite pulse-glow}.timeline-item.warning:before{border-color:var(--status-warning);background:var(--status-warning)}.timeline-item.completed:before{border-color:var(--status-active);background:var(--status-active)}.timeline-date{color:var(--text-muted);margin-bottom:4px;font-size:12px}.timeline-title{margin-bottom:4px;font-size:14px;font-weight:600}.timeline-desc{color:var(--text-secondary);font-size:12px}.chat-container{flex-direction:column;height:calc(100vh - 200px);min-height:400px;display:flex}.chat-messages{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.chat-bubble{border-radius:var(--radius-md);max-width:75%;padding:12px 16px;font-size:14px;line-height:1.6;animation:.3s ease-out fadeIn}.chat-bubble.user{background:var(--accent-gradient);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.chat-bubble.ai{background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-primary);border-bottom-left-radius:4px;align-self:flex-start}.chat-input-bar{border-top:1px solid var(--border-subtle);gap:12px;padding:16px;display:flex}.chat-input-bar input{flex:1}.kanban-board{gap:16px;min-height:500px;padding-bottom:16px;display:flex;overflow-x:auto}.kanban-column{background:var(--bg-glass);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;flex-shrink:0;min-width:280px;max-width:320px;display:flex}.kanban-column-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:14px 16px;font-size:13px;font-weight:700;display:flex}.kanban-column-header .count{background:var(--bg-glass);width:24px;height:24px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:flex}.kanban-column-body{flex-direction:column;flex:1;gap:10px;padding:12px;display:flex;overflow-y:auto}.kanban-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);padding:14px}.kanban-card:hover{border-color:var(--border-accent);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.kanban-card-title{margin-bottom:8px;font-size:13px;font-weight:600}.kanban-card-meta{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:11px;display:flex}.doc-editor{grid-template-columns:300px 1fr;gap:20px;min-height:calc(100vh - 200px);display:grid}.doc-sidebar{flex-direction:column;gap:16px;display:flex}.doc-main{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;display:flex}.doc-toolbar{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 16px;display:flex}.doc-content{flex:1;padding:24px 32px}.doc-content textarea{width:100%;height:100%;min-height:400px;color:var(--text-primary);font-family:var(--font-primary);resize:none;background:0 0;border:none;outline:none;font-size:14px;line-height:1.8}.notif-dot{position:relative}.notif-dot:after{content:"";background:var(--status-danger);border:2px solid var(--bg-secondary);border-radius:50%;width:8px;height:8px;position:absolute;top:-2px;right:-2px}.lang-switcher{background:var(--bg-glass);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);gap:4px;padding:4px;display:flex}.lang-btn{cursor:pointer;color:var(--text-muted);transition:all var(--transition-fast);font-size:12px;font-weight:600;font-family:var(--font-primary);background:0 0;border:none;border-radius:6px;padding:6px 12px}.lang-btn.active{background:var(--accent-gradient);color:#fff}.lang-btn:hover:not(.active){background:var(--bg-glass-hover);color:var(--text-primary)}.sync-indicator{border-radius:20px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;font-weight:500;display:flex}.sync-indicator.synced{color:var(--status-active);background:#48bb781a}.sync-indicator.syncing{color:var(--status-info);background:#4299e11a}.sync-indicator.offline{color:var(--status-muted);background:#7180961a}.sync-dot{border-radius:50%;width:8px;height:8px}.sync-dot.synced{background:var(--status-active)}.sync-dot.syncing{background:var(--status-info);animation:1.5s infinite pulse-glow}.sync-dot.offline{background:var(--status-muted)}.empty-state{text-align:center;color:var(--text-muted);padding:60px 20px}.empty-state svg{opacity:.3;margin-bottom:16px}.empty-state h3{color:var(--text-secondary);margin-bottom:8px;font-size:18px;font-weight:600}.empty-state p{max-width:400px;margin:0 auto;font-size:14px}.loading-spinner{justify-content:center;align-items:center;display:inline-flex}.loading-spinner:after{content:"";border:2px solid var(--border-subtle);border-top-color:var(--accent-primary);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.progress-bar{background:var(--bg-glass);border-radius:3px;height:6px;overflow:hidden}.progress-fill{background:var(--accent-gradient);height:100%;transition:width var(--transition-slow);border-radius:3px}[data-tooltip]{position:relative}[data-tooltip]:hover:after{content:attr(data-tooltip);background:var(--bg-tertiary);border:1px solid var(--border-medium);white-space:nowrap;z-index:1000;border-radius:6px;padding:6px 12px;font-size:12px;animation:.2s ease-out fadeIn;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:12px}.text-xs{font-size:11px}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--accent-primary)}.font-bold{font-weight:700}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.w-full{width:100%}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
