:root{--bg-main:#fff;--bg-subtle:#f8f9fa;--bg-hover:#f1f3f5;--bg-input:#fff;--border:#e2e8f0;--border-light:#f1f5f9;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--accent:#2563eb;--accent-dark:#1d4ed8;--accent-light:#eff6ff;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;font-family:var(--font);background:var(--bg-main);color:var(--text-primary);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}button{font-family:var(--font)}.app-loading{align-items:center;justify-content:center;font-size:14px;color:var(--text-muted)}.app,.app-loading{display:flex;height:100vh}.app{flex-direction:column;background:var(--bg-main)}.app,.app-body{overflow:hidden}.app-body{display:flex;flex:1 1}.empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-30%);text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.empty-state-icon{font-size:48px;margin-bottom:8px}.empty-state h3{font-size:20px;font-weight:600;color:var(--text-primary);margin:0}.empty-state p{font-size:14px;color:var(--text-secondary);max-width:360px;margin:0;line-height:1.6}.empty-state-actions{display:flex;gap:10px;margin-top:8px}.btn-demo{padding:10px 20px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;font-family:inherit}.btn-demo:hover{background:var(--accent-dark)}body.gantt-exporting .project-header-right{visibility:hidden}body.gantt-exporting .gantt-context-menu,body.gantt-exporting .gantt-sort-btn,body.gantt-exporting .gantt-tooltip{display:none}.app-shell{display:flex;flex-direction:column;height:100vh}.app-shell-content{flex:1 1;overflow:hidden;min-height:0}.btn-demo.secondary{background:none;color:var(--accent);border:1px solid var(--accent)}.btn-demo.secondary:hover{background:var(--accent-light)}