@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
:root{--color-bg:#f8f9fa;--color-surface:#fff;--color-surface-hover:#eff6ff;--color-border:#e2e8f0;--color-border-focus:#3b82f6;--color-text-primary:#1e293b;--color-text-secondary:#475569;--color-text-muted:#64748b;--gradient-brand:linear-gradient(135deg, #2563eb 0%, #7c3aed 100%);--status-completed:#10b981;--status-inprogress:#3b82f6;--status-delayed:#ef4444;--status-pending:#f59e0b;--status-notstarted:#94a3b8;--sidebar-width:260px;--sidebar-current-width:260px;--sidebar-bg:#fff;--sidebar-border:#e2e8f0;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000000a, 0 1px 2px #00000008;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -1px #0000000a;--shadow-lg:0 10px 15px -3px #00000017, 0 4px 6px -2px #0000000a;--font-family:"Inter", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;--font-size-xs:11px;--font-size-sm:12px;--font-size-base:14px;--font-size-md:15px;--font-size-lg:16px;--font-size-xl:20px;--font-size-2xl:24px;--font-size-3xl:28px;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--z-sidebar:100;--z-header:90;--z-dropdown:200;--z-modal:300;--z-toast:400}[data-theme=dark]{--color-bg:#0f172a;--color-surface:#1e293b;--color-surface-hover:#334155;--color-border:#334155;--color-border-focus:#60a5fa;--color-text-primary:#f1f5f9;--color-text-secondary:#94a3b8;--color-text-muted:#64748b;--gradient-brand:linear-gradient(135deg, #60a5fa 0%, #a78bfa 100%);--sidebar-bg:#1e293b;--sidebar-border:#334155;--shadow-sm:0 1px 3px #0003, 0 1px 2px #00000026;--shadow-md:0 4px 6px -1px #00000040, 0 2px 4px -1px #0000001f;--shadow-lg:0 10px 15px -3px #0000004d, 0 4px 6px -2px #00000026}[data-theme=dark] .nav-item.active{background:#1e3a5f;border-color:#2563eb}[data-theme=dark] .nav-item:hover{background:#334155}[data-theme=dark] .auth-page{background-image:radial-gradient(at top,#1e293b 0%,#0000 60%)}[data-theme=dark] .form-input,[data-theme=dark] .form-select,[data-theme=dark] .form-textarea{color:#f1f5f9;background:#0f172a;border-color:#475569}[data-theme=dark] .skeleton{background:linear-gradient(90deg,#1e293b 25%,#334155 50%,#1e293b 75%) 0 0/200% 100%}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#475569}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#64748b}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;overflow-x:hidden}body{font-family:var(--font-family);background-color:var(--color-bg);color:var(--color-text-primary);min-height:100vh;line-height:1.6;overflow-x:hidden}h1,h2,h3,h4,h5,h6{color:var(--color-text-primary);font-weight:600;line-height:1.3}p{color:var(--color-text-secondary)}a{color:#2563eb;transition:color var(--transition-fast);text-decoration:none}a:hover{color:#1d4ed8}.app-layout{min-height:100vh;display:flex;overflow-x:hidden}.sidebar{width:var(--sidebar-current-width);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);min-height:100vh;z-index:var(--z-sidebar);scrollbar-width:thin;flex-direction:column;transition:width .22s;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden auto}.sidebar-header{padding:var(--spacing-lg) var(--spacing-md) var(--spacing-md);border-bottom:1px solid var(--sidebar-border)}.sidebar-brand{align-items:center;gap:10px;margin-bottom:4px;display:flex}.sidebar-brand-icon{font-size:24px;line-height:1}.sidebar-brand-title{font-size:var(--font-size-lg);background:var(--gradient-brand);-webkit-text-fill-color:transparent;letter-spacing:-.3px;-webkit-background-clip:text;background-clip:text;font-weight:700}.sidebar-brand-sub{font-size:var(--font-size-xs);color:var(--color-text-muted);padding-left:34px}.sidebar-nav{padding:var(--spacing-sm) var(--spacing-sm);flex:1}.sidebar-section-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);padding:var(--spacing-sm) var(--spacing-sm) var(--spacing-xs);margin-top:var(--spacing-md);font-weight:600}.nav-item{border-radius:var(--radius-sm);font-size:var(--font-size-base);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-base);text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:9px 12px;font-weight:500;text-decoration:none;display:flex}.nav-item:hover{background:var(--color-surface-hover);color:#2563eb}.nav-item.active{color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe}.nav-item-icon{flex-shrink:0;font-size:16px}.main-content{margin-left:var(--sidebar-current-width);flex-direction:column;flex:1;min-width:0;min-height:100vh;transition:margin-left .22s;display:flex;overflow-x:hidden}.page-header{padding:var(--spacing-sm) var(--spacing-xl);background:var(--color-surface);border-bottom:1px solid var(--sidebar-border);justify-content:space-between;align-items:center;gap:var(--spacing-md);display:flex}.page-header-left{align-items:center;gap:12px;display:flex}.page-header h1{font-size:var(--font-size-xl);background:var(--gradient-brand);-webkit-text-fill-color:transparent;letter-spacing:-.5px;-webkit-background-clip:text;background-clip:text;font-weight:700}.page-header-sub{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:2px}.page-body{padding:var(--spacing-sm) var(--spacing-xl);flex:1}.status-bar{align-items:center;gap:var(--spacing-lg);background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);margin-bottom:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);box-shadow:var(--shadow-sm);flex-wrap:wrap;padding:12px 20px;display:flex}.status-bar-item{white-space:nowrap;align-items:center;gap:6px;display:flex}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-md);box-shadow:var(--shadow-sm);transition:all var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.data-option-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;transition:all var(--transition-base);box-shadow:var(--shadow-sm);cursor:pointer;padding:28px}.data-option-card:hover{background:var(--color-surface-hover);box-shadow:var(--shadow-lg);border-color:#bfdbfe;transform:translateY(-2px)}.data-option-icon{margin-bottom:12px;font-size:48px;display:block}.data-option-title{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:6px;font-weight:600}.data-option-desc{font-size:var(--font-size-sm);color:var(--color-text-muted)}.btn{border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;font-weight:500;font-family:var(--font-family);border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:9px 18px;display:inline-flex}.btn-primary{color:#fff;background:#2563eb;border-color:#2563eb}.btn-primary:hover{background:#1d4ed8;border-color:#1d4ed8;transform:translateY(-1px);box-shadow:0 4px 12px #2563eb59}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-surface-hover);color:#2563eb;border-color:#93c5fd}.btn-danger{color:#ef4444;background:#fff;border-color:#fca5a5}.btn-danger:hover{background:#fef2f2;border-color:#ef4444}.btn-sm{font-size:var(--font-size-sm);padding:6px 12px}.btn-lg{font-size:var(--font-size-lg);padding:12px 24px}.btn-icon{border-radius:var(--radius-sm);padding:8px}.btn-full{width:100%}.form-group{margin-bottom:var(--spacing-md)}.form-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:6px;font-weight:500;display:block}.form-input,.form-select,.form-textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;font-size:var(--font-size-base);font-family:var(--font-family);color:var(--color-text-primary);background:var(--color-surface);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:9px 12px}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 3px #3b82f61f}.badge{border-radius:var(--radius-full);font-size:var(--font-size-xs);align-items:center;gap:4px;padding:2px 8px;font-weight:500;display:inline-flex}.badge-blue{color:#1d4ed8;background:#dbeafe}.badge-green{color:#065f46;background:#d1fae5}.badge-yellow{color:#92400e;background:#fef3c7}.badge-red{color:#991b1b;background:#fee2e2}.badge-gray{color:#475569;background:#f1f5f9}.badge-purple{color:#5b21b6;background:#ede9fe}.status-badge{border-radius:var(--radius-full);white-space:nowrap;padding:2px 8px;font-size:9px;font-weight:500}.status-completed{color:#065f46;background:#d1fae5}.status-inprogress{color:#1d4ed8;background:#dbeafe}.status-delayed{color:#991b1b;background:#fee2e2}.status-pending{color:#92400e;background:#fef3c7}.status-notstarted{color:#475569;background:#f1f5f9}.divider{background:linear-gradient(90deg, var(--color-border) 0%, transparent 100%);height:1px;margin:var(--spacing-md) 0}.realtime-indicator{font-size:var(--font-size-xs);color:var(--color-text-muted);align-items:center;gap:6px;display:flex}.realtime-dot{background:#10b981;border-radius:50%;width:7px;height:7px;animation:2s infinite pulse-green}@keyframes pulse-green{0%,to{opacity:1;box-shadow:0 0 #10b98166}50%{opacity:.8;box-shadow:0 0 0 4px #10b98100}}.avatar-stack{align-items:center;display:flex}.avatar{border:2px solid var(--color-surface);width:28px;height:28px;font-size:var(--font-size-xs);color:var(--color-text-secondary);background:#e2e8f0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:-8px;font-weight:600;display:flex;overflow:hidden}.avatar:first-child{margin-left:0}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-base);cursor:pointer;position:relative}.project-card:hover{box-shadow:var(--shadow-md);border-color:#93c5fd;transform:translateY(-1px)}.project-card-private:before{content:"🔒";font-size:14px;position:absolute;top:14px;right:14px}.project-card-team:before{content:"👥";font-size:14px;position:absolute;top:14px;right:14px}.empty-state{text-align:center;color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;padding:64px 32px;display:flex}.empty-state-icon{margin-bottom:var(--spacing-md);font-size:48px}.empty-state h3{font-size:var(--font-size-xl);color:var(--color-text-secondary);margin-bottom:8px}.empty-state p{font-size:var(--font-size-base);max-width:420px}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#f0f4f8 25%,#e8edf2 50%,#f0f4f8 75%) 0 0/200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.grid-2{gap:var(--spacing-md);grid-template-columns:1fr 1fr;display:grid}.grid-3{gap:var(--spacing-md);grid-template-columns:repeat(3,1fr);display:grid}.grid-4{gap:var(--spacing-md);grid-template-columns:repeat(4,1fr);display:grid}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-xs{gap:var(--spacing-xs)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.flex-1{flex:1}.auth-page{background:var(--color-bg);background-image:radial-gradient(at top,#dbeafe 0%,#0000 60%);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:100%;max-width:420px;box-shadow:var(--shadow-lg);padding:40px}.auth-logo{text-align:center;margin-bottom:32px}.auth-logo-icon{margin-bottom:12px;font-size:48px;display:block}.auth-logo-title{font-size:var(--font-size-2xl);background:var(--gradient-brand);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-weight:700}.alert{border-radius:var(--radius-md);font-size:var(--font-size-base);border:1px solid #0000;align-items:flex-start;gap:10px;padding:12px 16px;display:flex}.alert-error{color:#b91c1c;background:#fef2f2;border-color:#fca5a5}.alert-success{color:#15803d;background:#f0fdf4;border-color:#86efac}.alert-info{color:#1d4ed8;background:#eff6ff;border-color:#93c5fd}.alert-warn{color:#b45309;background:#fffbeb;border-color:#fcd34d}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}:focus-visible{outline-offset:2px;outline:2px solid #3b82f6}@media (max-width:768px){.sidebar{z-index:200;transition:transform .3s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0)}.sidebar-overlay{z-index:199;opacity:0;pointer-events:none;background:#0006;transition:opacity .3s;position:fixed;inset:0}.sidebar-overlay.visible{opacity:1;pointer-events:auto}.main-content{margin-left:0!important}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.mobile-hamburger{z-index:150;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;position:fixed;top:10px;left:10px;box-shadow:0 2px 8px #00000014;display:flex!important}.page-header{padding-left:56px}}@media (min-width:769px){.mobile-hamburger,.sidebar-overlay{display:none!important}}@media print{.sidebar,.no-print,.mobile-hamburger,.sidebar-overlay{display:none!important}.main-content{margin-left:0!important}.page-body{padding:8px!important}body.print-content-only .page-header,body.print-chart-only .page-header,body.print-chart-only .page-body>:not(.print-target){display:none!important}body.print-chart-only .print-target{page-break-inside:avoid}.card{break-inside:avoid;box-shadow:none!important;border:1px solid #ddd!important}.btn,button{box-shadow:none!important}a{color:inherit!important;text-decoration:none!important}@page{margin:1cm;size:A4 landscape}}.recharts-wrapper,.recharts-surface,.recharts-surface:focus,.recharts-wrapper *{outline:none!important}
