:root{--color-primary:#6366f1;--color-primary-hover:#4f46e5;--color-primary-light:#e0e7ff;--color-primary-subtle:#eef2ff;--color-secondary:#8b5cf6;--color-accent:#06b6d4;--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--color-info:#3b82f6;--bg-app:#f8fafc;--bg-sidebar:#1e1b4b;--bg-sidebar-hover:#312e81;--bg-sidebar-active:#3730a3;--bg-card:#fff;--bg-card-hover:#f1f5f9;--bg-input:#fff;--bg-header:#fff;--bg-modal-overlay:#0f172a99;--bg-tooltip:#1e293b;--bg-gantt-row:#fff;--bg-gantt-row-alt:#f8fafc;--bg-gantt-weekend:#6366f108;--bg-today-line:#ef444426;--text-primary:#0f172a;--text-secondary:#475569;--text-tertiary:#94a3b8;--text-inverse:#fff;--text-sidebar:#c7d2fe;--text-sidebar-active:#fff;--text-link:#6366f1;--border-color:#e2e8f0;--border-color-light:#f1f5f9;--border-color-focus:#6366f1;--border-color-hover:#cbd5e1;--font-family:"Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, sans-serif;--font-size-xs:.6875rem;--font-size-sm:.75rem;--font-size-base:.8125rem;--font-size-md:.875rem;--font-size-lg:1rem;--font-size-xl:1.125rem;--font-size-2xl:1.375rem;--font-size-3xl:1.75rem;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.75;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--sidebar-width:260px;--sidebar-collapsed-width:64px;--header-height:52px;--gantt-row-height:40px;--gantt-header-height:52px;--kanban-card-width:280px;--task-list-row-height:40px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-full:9999px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000000a;--shadow-card:0 1px 3px #0000000a, 0 1px 2px #0000000f;--shadow-focus:0 0 0 3px #6366f140;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.35s cubic-bezier(.4, 0, .2, 1);--transition-spring:.4s cubic-bezier(.34, 1.56, .64, 1);--z-dropdown:100;--z-sticky:200;--z-sidebar:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--gantt-cell-width-day:40px;--gantt-cell-width-week:120px;--gantt-cell-width-month:180px;--gantt-task-label-width:460px}[data-theme=dark]{--bg-app:#0f172a;--bg-sidebar:#0c0a1d;--bg-sidebar-hover:#1e1b4b;--bg-sidebar-active:#312e81;--bg-card:#1e293b;--bg-card-hover:#334155;--bg-input:#1e293b;--bg-header:#1e293b;--bg-modal-overlay:#000000bf;--bg-gantt-row:#1e293b;--bg-gantt-row-alt:#172033;--bg-gantt-weekend:#6366f10d;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-tertiary:#64748b;--text-sidebar:#a5b4fc;--border-color:#334155;--border-color-light:#1e293b;--border-color-hover:#475569;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006;--shadow-lg:0 10px 15px -3px #0006;--shadow-card:0 1px 3px #0000004d}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--text-primary);background:var(--bg-app);height:100vh;overflow:hidden}#app{height:100vh;display:flex;overflow:hidden}.main-content{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.view-container{flex:1;position:relative;overflow:hidden}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;background:0 0;border:none}input,textarea,select{font-family:inherit;font-size:inherit;color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--border-color-focus);box-shadow:var(--shadow-focus)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-tertiary);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}::selection{background:var(--color-primary-light);color:var(--color-primary-hover)}.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:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sr-only{clip:rect(0,0,0,0);width:1px;height:1px;position:absolute;overflow:hidden}.toast-container{bottom:var(--space-6);right:var(--space-6);z-index:var(--z-toast);gap:var(--space-2);flex-direction:column;display:flex;position:fixed}.toast{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-lg);align-items:center;gap:var(--space-3);min-width:280px;animation:toastIn .3s var(--transition-spring) forwards;font-size:var(--font-size-sm);display:flex}.toast.toast-exit{animation:.25s forwards toastOut}.toast-success{border-left:3px solid var(--color-success)}.toast-error{border-left:3px solid var(--color-danger)}.toast-info{border-left:3px solid var(--color-info)}@keyframes toastIn{0%{opacity:0;transform:translate(40px)scale(.95)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes toastOut{to{opacity:0;transform:translate(40px)scale(.95)}}.context-menu{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--space-1) 0;min-width:180px;z-index:var(--z-dropdown);animation:.15s forwards menuIn;position:fixed}.context-menu-item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer;transition:background var(--transition-fast);text-align:left;width:100%;display:flex}.context-menu-item:hover{background:var(--bg-card-hover)}.context-menu-item.danger{color:var(--color-danger)}.context-menu-separator{background:var(--border-color);height:1px;margin:var(--space-1) 0}@keyframes menuIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:all var(--transition-fast);white-space:nowrap;height:32px;line-height:1;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";opacity:0;transition:opacity var(--transition-fast);background:currentColor;position:absolute;inset:0}.btn:hover:after{opacity:.08}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-primary);color:var(--text-inverse)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{color:var(--text-secondary);border:1px solid var(--border-color);background:0 0}.btn-secondary:hover{border-color:var(--border-color-hover);color:var(--text-primary)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover{background:var(--bg-card-hover);color:var(--text-primary)}.btn-danger{color:var(--color-danger);background:0 0}.btn-danger:hover{background:#ef44441a}.btn-sm{height:28px;padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.btn-lg{height:40px;padding:var(--space-3) var(--space-6);font-size:var(--font-size-md)}.btn-icon{width:32px;height:32px;padding:0}.btn-icon.btn-sm{width:28px;height:28px}.badge{border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);align-items:center;padding:2px 8px;line-height:1.4;display:inline-flex}.badge-todo{color:#475569;background:#f1f5f9}.badge-in-progress{color:#1d4ed8;background:#dbeafe}.badge-review{color:#b45309;background:#fef3c7}.badge-done{color:#047857;background:#d1fae5}.badge-high{color:#dc2626;background:#fee2e2}.badge-medium{color:#d97706;background:#fef3c7}.badge-low{color:#4338ca;background:#e0e7ff}[data-theme=dark] .badge-todo{color:#94a3b8;background:#334155}[data-theme=dark] .badge-in-progress{color:#60a5fa;background:#1e3a5f}[data-theme=dark] .badge-review{color:#fbbf24;background:#451a03}[data-theme=dark] .badge-done{color:#34d399;background:#064e3b}[data-theme=dark] .badge-high{color:#f87171;background:#450a0a}[data-theme=dark] .badge-medium{color:#fbbf24;background:#451a03}[data-theme=dark] .badge-low{color:#a5b4fc;background:#312e81}.avatar{border-radius:var(--radius-full);width:28px;height:28px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:#fff;text-transform:uppercase;flex-shrink:0;justify-content:center;align-items:center;display:flex}.avatar-sm{width:22px;height:22px;font-size:10px}.avatar-lg{width:36px;height:36px;font-size:var(--font-size-sm)}.dropdown{display:inline-flex;position:relative}.dropdown-menu{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-1) 0;min-width:180px;z-index:var(--z-dropdown);animation:.15s forwards menuIn;position:absolute;top:calc(100% + 4px);left:0}.dropdown-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer;transition:background var(--transition-fast);text-align:left;width:100%;display:flex}.dropdown-item:hover{background:var(--bg-card-hover)}.dropdown-item.active{color:var(--color-primary);font-weight:var(--font-weight-medium)}.tabs{border-bottom:1px solid var(--border-color);align-items:center;gap:0;display:flex}.tab{padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);transition:all var(--transition-fast);cursor:pointer;align-items:center;gap:var(--space-2);border-bottom:2px solid #0000;display:flex}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.progress-bar{background:var(--border-color);border-radius:var(--radius-full);width:100%;height:4px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--color-primary), var(--color-secondary));border-radius:var(--radius-full);height:100%;transition:width var(--transition-normal)}.empty-state{padding:var(--space-12);text-align:center;color:var(--text-tertiary);flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state-icon{margin-bottom:var(--space-4);opacity:.5;font-size:48px}.empty-state-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-secondary);margin-bottom:var(--space-2)}.empty-state-text{font-size:var(--font-size-sm);max-width:320px;margin-bottom:var(--space-6)}.tooltip{background:var(--bg-tooltip);color:var(--text-inverse);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);z-index:var(--z-tooltip);pointer-events:none;white-space:nowrap;animation:.15s forwards tooltipIn;position:fixed}@keyframes tooltipIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.checkbox{border:2px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;width:16px;height:16px;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.checkbox:hover{border-color:var(--color-primary)}.checkbox.checked{background:var(--color-primary);border-color:var(--color-primary)}.checkbox.checked:after{content:"";border-bottom:2px solid #fff;border-left:2px solid #fff;width:8px;height:5px;transform:rotate(-45deg)translateY(-1px)}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);height:100vh;transition:width var(--transition-normal);z-index:var(--z-sidebar);flex-direction:column;flex-shrink:0;display:flex;position:relative;overflow:hidden}.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar-logo{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4);height:var(--header-height);border-bottom:1px solid #ffffff12;flex-shrink:0;display:flex}.sidebar-logo-icon{background:linear-gradient(135deg, var(--color-primary), var(--color-secondary));border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.sidebar-logo-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#fff;letter-spacing:-.3px;white-space:nowrap;overflow:hidden}.sidebar-logo-text span{color:var(--color-primary);background:linear-gradient(90deg,#a5b4fc,#c4b5fd);-webkit-text-fill-color:transparent;-webkit-background-clip:text}.sidebar-section{padding:var(--space-3) 0;flex:1;overflow:hidden auto}.sidebar-section-header{padding:var(--space-2) var(--space-4);margin-bottom:var(--space-1);justify-content:space-between;align-items:center;display:flex}.sidebar-section-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:#ffffff59;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.sidebar-add-btn{border-radius:var(--radius-sm);color:#fff6;width:22px;height:22px;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;font-size:16px;display:flex}.sidebar-add-btn:hover{color:#fff;background:#ffffff1a}.project-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);cursor:pointer;transition:all var(--transition-fast);border-radius:0;min-height:36px;display:flex;position:relative}.project-item:hover{background:var(--bg-sidebar-hover)}.project-item.active{background:var(--bg-sidebar-active)}.project-item.active:before{content:"";background:var(--color-primary);border-radius:0 2px 2px 0;width:3px;position:absolute;top:4px;bottom:4px;left:0}.project-item-color{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.project-item-name{font-size:var(--font-size-sm);color:var(--text-sidebar);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.project-item.active .project-item-name{color:var(--text-sidebar-active);font-weight:var(--font-weight-medium)}.project-item-menu{opacity:0;border-radius:var(--radius-sm);color:#ffffff80;width:20px;height:20px;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.project-item:hover .project-item-menu{opacity:1}.project-item-menu:hover{color:#fff;background:#ffffff26}.project-item.locked .project-item-name{opacity:.5}.project-lock-icon{opacity:.6;flex-shrink:0;margin-right:2px;font-size:11px}.sidebar-bottom{padding:var(--space-3) 0;border-top:1px solid #ffffff12;flex-shrink:0}.sidebar-bottom-item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);cursor:pointer;transition:background var(--transition-fast);color:#fff6;font-size:var(--font-size-sm);display:flex}.sidebar-bottom-item:hover{background:var(--bg-sidebar-hover);color:#fffc}.sidebar-bottom-item .icon{text-align:center;flex-shrink:0;width:20px;font-size:16px}.sidebar-toggle{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-full);cursor:pointer;z-index:10;width:20px;height:20px;transition:all var(--transition-fast);box-shadow:var(--shadow-sm);color:var(--text-secondary);justify-content:center;align-items:center;font-size:10px;display:flex;position:absolute;top:50%;right:-10px;transform:translateY(-50%)}.sidebar-toggle:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.header{height:var(--header-height);background:var(--bg-header);border-bottom:1px solid var(--border-color);padding:0 var(--space-4);align-items:center;gap:var(--space-3);z-index:var(--z-sticky);flex-shrink:0;display:flex;position:relative}.header-project-name{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.header-divider{background:var(--border-color);flex-shrink:0;width:1px;height:18px}.header-tabs{align-items:center;gap:var(--space-1);display:flex}.header-tab{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);height:32px;display:flex}.header-tab:hover{background:var(--bg-card-hover);color:var(--text-primary)}.header-tab.active{background:var(--color-primary-subtle);color:var(--color-primary)}[data-theme=dark] .header-tab.active{background:#6366f126}.header-tab-icon{font-size:14px;line-height:1}.header-search{flex:1;max-width:280px;margin-left:auto;position:relative}.header-search-icon{left:var(--space-3);color:var(--text-tertiary);pointer-events:none;font-size:13px;position:absolute;top:50%;transform:translateY(-50%)}.header-search-input{width:100%;padding:var(--space-2) var(--space-3) var(--space-2) 30px;background:var(--bg-app);border:1px solid var(--border-color);border-radius:var(--radius-full);font-size:var(--font-size-sm);height:32px;transition:all var(--transition-fast)}.header-search-input:focus{border-color:var(--border-color-focus);background:var(--bg-card);box-shadow:var(--shadow-focus)}.header-search-input::placeholder{color:var(--text-tertiary)}.header-actions{align-items:center;gap:var(--space-2);display:flex}.header-action-btn{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:16px;display:flex;position:relative}.header-action-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.header-add-btn{align-items:center;gap:var(--space-2);padding:0 var(--space-4);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);height:32px;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;display:flex}.header-add-btn:hover{background:var(--color-primary-hover)}.gantt-wrapper{background:var(--bg-app);flex-direction:column;height:100%;display:flex;overflow:hidden}.gantt-toolbar{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--bg-card);border-bottom:1px solid var(--border-color);flex-shrink:0;display:flex}.gantt-scale-btns{border:1px solid var(--border-color);border-radius:var(--radius-md);align-items:center;display:flex;overflow:hidden}.gantt-scale-btn{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border-right:1px solid var(--border-color);align-items:center;height:28px;display:flex}.gantt-scale-btn:last-child{border-right:none}.gantt-scale-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.gantt-scale-btn.active{background:var(--color-primary);color:#fff}.gantt-today-btn{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;height:28px;transition:all var(--transition-fast);display:flex}.gantt-today-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.gantt-nav-btns{gap:var(--space-1);display:flex}.gantt-nav-btn{border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:12px;display:flex}.gantt-nav-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.gantt-period-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);text-align:center;min-width:120px}.gantt-toolbar-right{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.gantt-main{flex:1;display:flex;overflow:hidden}.gantt-labels{width:var(--gantt-task-label-width);border-right:1px solid var(--border-color);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.gantt-labels-header{height:var(--gantt-header-height);padding:0 var(--space-2);border-bottom:1px solid var(--border-color);background:var(--bg-card);align-items:center;gap:var(--space-1);flex-shrink:0;display:flex}.gantt-col-header-name,.gantt-col-header-progress,.gantt-col-header-assignee,.gantt-col-header-duedate{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;overflow:hidden}.gantt-col-header-name{text-align:center;flex:1;min-width:0}.gantt-col-header-progress{text-align:center;flex-shrink:0;width:68px}.gantt-col-header-assignee{flex-shrink:0;width:50px;padding-left:8px}.gantt-col-header-duedate{text-align:center;flex-shrink:0;width:68px;margin-left:-4px}.gantt-col-name{flex:1;align-items:center;gap:4px;min-width:0;display:flex;overflow:hidden}.gantt-col-progress{flex-shrink:0;align-items:center;gap:4px;width:68px;display:flex}.gantt-col-bar{background:var(--border-color);border-radius:var(--radius-full);flex:1;height:4px;overflow:hidden}.gantt-col-bar-fill{background:var(--color-primary);border-radius:var(--radius-full);height:100%}.gantt-col-progress-pct{color:var(--text-tertiary);white-space:nowrap;text-align:right;flex-shrink:0;width:24px;font-size:10px}.gantt-col-assignee{flex-shrink:0;justify-content:center;align-items:center;width:50px;display:flex}.gantt-col-assignee-name{font-size:var(--font-size-xs);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gantt-col-empty{font-size:var(--font-size-xs);color:var(--text-tertiary)}.gantt-col-duedate{width:68px;font-size:var(--font-size-xs);color:var(--text-tertiary);text-align:right;white-space:nowrap;flex-shrink:0;margin-left:-4px}.gantt-col-duedate-delayed{color:var(--color-danger);font-weight:var(--font-weight-medium)}.gantt-labels-body{scrollbar-width:none;flex:1;overflow:hidden scroll}.gantt-labels-body::-webkit-scrollbar{display:none}.gantt-task-row{height:var(--gantt-row-height);padding:0 var(--space-2);align-items:center;gap:var(--space-1);border-bottom:1px solid var(--border-color-light);cursor:pointer;transition:background var(--transition-fast);display:flex;position:relative}.gantt-task-row:hover{background:var(--bg-gantt-row-alt)}.gantt-task-row.selected{background:var(--color-primary-subtle)}[data-theme=dark] .gantt-task-row.selected{background:#6366f11a}.gantt-task-row[draggable=true]{cursor:grab}.gantt-task-row[draggable=true]:active{cursor:grabbing}.gantt-task-row.dragging{opacity:.5;background:var(--bg-card-hover)}.gantt-task-row.drag-over-top{box-shadow:inset 0 2px 0 var(--color-primary)}.gantt-task-row.drag-over-bottom{box-shadow:inset 0 -2px 0 var(--color-primary)}.gantt-expand-btn{width:16px;height:16px;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;display:flex}.gantt-expand-btn:hover{background:var(--border-color);color:var(--text-primary)}.gantt-task-name{font-size:var(--font-size-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.gantt-task-dates{font-size:var(--font-size-xs);color:var(--text-tertiary);white-space:nowrap;flex-shrink:0}.gantt-task-row.is-milestone .gantt-task-name{font-weight:var(--font-weight-medium);color:var(--color-warning)}.gantt-timeline{flex:1;position:relative;overflow:auto}.gantt-timeline-inner{min-height:100%;position:relative}.gantt-timeline-header{z-index:10;background:var(--bg-card);border-bottom:1px solid var(--border-color);height:var(--gantt-header-height);flex-direction:column;display:flex;position:sticky;top:0;overflow:visible}.gantt-timeline-header-row{height:50%;display:flex}.gantt-header-cell{font-size:var(--font-size-xs);color:var(--text-secondary);border-right:1px solid var(--border-color-light);font-weight:var(--font-weight-medium);flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.gantt-header-cell.today{color:var(--color-danger);font-weight:var(--font-weight-semibold)}.gantt-header-cell.sunday{color:#ef4444}.gantt-header-cell.saturday{color:#3b82f6}.gantt-grid{top:var(--gantt-header-height);pointer-events:none;z-index:1;position:absolute;bottom:0;left:0;right:0}.gantt-grid-col{border-right:1px solid var(--border-color-light);position:absolute;top:0;bottom:0}.gantt-grid-col.weekend{background:var(--bg-gantt-weekend)}.gantt-grid-col.today-col{background:#ef44440f}.gantt-today-marker{background:var(--color-danger);pointer-events:none;z-index:100;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 8px #ef444466}.gantt-today-label{background:var(--color-danger);color:#fff;border-radius:var(--radius-sm);font-size:10px;font-weight:var(--font-weight-bold);white-space:nowrap;pointer-events:none;padding:2px 8px;position:absolute;top:-24px;left:50%;transform:translate(-50%)}.gantt-today-label:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:4px solid var(--color-danger);position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}.gantt-today-dot{background:var(--color-danger);border-radius:var(--radius-full);width:8px;height:8px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #fff}.gantt-dependency-container{pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;top:0;left:0}.gantt-dependency-line{fill:none;stroke:var(--text-tertiary);stroke-width:1.5px;stroke-opacity:.5;stroke-dasharray:4;transition:all .3s;animation:20s linear infinite dash}@keyframes dash{0%{stroke-dashoffset:200px}to{stroke-dashoffset:0}}.gantt-dependency-line:hover{stroke:var(--color-primary);stroke-opacity:1;stroke-width:2.5px;stroke-dasharray:0}.gantt-dependency-arrow{fill:var(--text-secondary);fill-opacity:.4}.gantt-bars-container{position:relative}.gantt-bar-row{height:var(--gantt-row-height);border-bottom:1px solid var(--border-color-light);position:relative}.gantt-bar-row:nth-child(2n){background:var(--bg-gantt-row-alt)}.gantt-bar{border-radius:var(--radius-sm);cursor:grab;height:22px;padding:0 var(--space-2);transition:filter var(--transition-fast), box-shadow var(--transition-fast);-webkit-user-select:none;user-select:none;z-index:3;align-items:center;min-width:4px;display:flex;position:absolute;top:calc(50% - 11px);overflow:hidden}.gantt-bar:hover{filter:brightness(1.1);box-shadow:var(--shadow-md);z-index:10}.gantt-bar:active{cursor:grabbing;z-index:10}.gantt-bar.dragging{opacity:.85;box-shadow:var(--shadow-xl);z-index:20;cursor:grabbing}.gantt-bar-label{font-size:var(--font-size-xs);color:#fff;white-space:nowrap;text-overflow:ellipsis;line-height:22px;font-weight:var(--font-weight-medium);text-shadow:0 1px 2px #0000004d;pointer-events:none;flex:1;overflow:hidden}.gantt-bar-progress{border-radius:var(--radius-sm) 0 0 var(--radius-sm);pointer-events:none;background:#0003;position:absolute;top:0;bottom:0;left:0}.gantt-bar-resize{cursor:ew-resize;z-index:5;width:8px;position:absolute;top:0;bottom:0}.gantt-bar-resize-left{cursor:w-resize;left:0}.gantt-bar-resize-right{cursor:e-resize;right:0}.gantt-milestone{background:var(--color-warning);cursor:pointer;width:14px;height:14px;transition:all var(--transition-fast);z-index:5;border-radius:2px;position:absolute;top:calc(50% - 7px);transform:rotate(45deg)}.gantt-milestone:hover{transform:rotate(45deg)scale(1.2)}.gantt-milestone-label{top:var(--gantt-header-height);font-size:10px;font-weight:var(--font-weight-semibold);white-space:nowrap;cursor:pointer;border-radius:var(--radius-sm);background:var(--bg-card);z-index:11;transition:all var(--transition-fast);opacity:.8;border:1px solid;padding:2px 6px;position:absolute;transform:translate(-50%)}.gantt-milestone-label:hover{opacity:1;transform:translate(-50%)scale(1.05)}.gantt-add-task-row{height:var(--gantt-row-height);padding:0 var(--space-3);align-items:center;gap:var(--space-2);cursor:pointer;color:var(--text-tertiary);font-size:var(--font-size-sm);transition:all var(--transition-fast);border-bottom:1px solid var(--border-color-light);display:flex}.gantt-add-task-row:hover{background:var(--color-primary-subtle);color:var(--color-primary)}.milestone-task-list{padding:var(--space-2);border:1px solid var(--border-color-light);border-radius:var(--radius-md);background:var(--bg-app);flex-direction:column;gap:4px;max-height:150px;display:flex;overflow-y:auto}.milestone-task-item{align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--text-primary);transition:background var(--transition-fast);padding:4px 6px;display:flex}.milestone-task-item:hover{background:var(--bg-card-hover)}.tasklist-wrapper{background:var(--bg-app);flex-direction:column;height:100%;display:flex;overflow:hidden}.tasklist-toolbar{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--bg-card);border-bottom:1px solid var(--border-color);flex-shrink:0;display:flex}.tasklist-toolbar-right{gap:var(--space-2);margin-left:auto;display:flex}.tasklist-table-wrap{flex:1;overflow:auto}.tasklist-table{border-collapse:collapse;width:100%;min-width:800px}.tasklist-th{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;text-align:left;background:var(--bg-card);border-bottom:1px solid var(--border-color);white-space:nowrap;z-index:var(--z-sticky);position:sticky;top:0}.tasklist-tr{border-bottom:1px solid var(--border-color-light);transition:background var(--transition-fast)}.tasklist-tr:hover{background:var(--bg-card-hover)}.tasklist-tr[draggable=true]{cursor:grab}.tasklist-tr[draggable=true]:active{cursor:grabbing}.tasklist-tr.dragging{opacity:.5;background:var(--bg-card-hover)}.tasklist-tr.drag-over-top td{box-shadow:inset 0 2px 0 var(--color-primary)}.tasklist-tr.drag-over-bottom td{box-shadow:inset 0 -2px 0 var(--color-primary)}.tasklist-tr.selected{background:var(--color-primary-subtle)}[data-theme=dark] .tasklist-tr.selected{background:#6366f11a}.tasklist-tr.is-child .tasklist-td-name{padding-left:calc(var(--space-4) + var(--indent,0px))}.tasklist-td{padding:0 var(--space-3);height:var(--task-list-row-height);font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;vertical-align:middle}.tasklist-td-name{align-items:center;gap:var(--space-2);height:100%;display:flex}.tasklist-task-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tasklist-expand-btn{width:16px;height:16px;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;display:flex}.tasklist-expand-btn:hover{background:var(--border-color);color:var(--text-primary)}.tasklist-inline-input{width:100%;font-size:var(--font-size-sm);color:var(--text-primary);background:0 0;border:none;outline:none;padding:0}.tasklist-td.editing{background:var(--bg-input);border:1px solid var(--border-color-focus);border-radius:var(--radius-sm);box-shadow:var(--shadow-focus)}.tasklist-add-row{height:var(--task-list-row-height);padding:0 var(--space-3);align-items:center;gap:var(--space-2);cursor:pointer;color:var(--text-tertiary);font-size:var(--font-size-sm);border-bottom:1px solid var(--border-color-light);transition:all var(--transition-fast);display:flex}.tasklist-add-row:hover{background:var(--color-primary-subtle);color:var(--color-primary)}.tasklist-progress{align-items:center;gap:var(--space-2);min-width:100px;display:flex}.tasklist-progress-text{font-size:var(--font-size-xs);color:var(--text-tertiary);text-align:right;width:30px}.tasklist-tr.drag-over{border-top:2px solid var(--color-primary)}.tasklist-tr.drag-child{background:#6366f10f}.kanban-wrapper{background:var(--bg-app);flex-direction:column;height:100%;display:flex;overflow:hidden}.kanban-toolbar{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--bg-card);border-bottom:1px solid var(--border-color);flex-shrink:0;display:flex}.kanban-board{gap:var(--space-4);padding:var(--space-4);flex:1;align-items:flex-start;display:flex;overflow-x:auto}.kanban-column{width:var(--kanban-card-width);gap:var(--space-3);flex-direction:column;flex-shrink:0;max-height:100%;display:flex}.kanban-column-header{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-color);display:flex}.kanban-column-dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.kanban-column-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--text-primary);flex:1}.kanban-column-count{font-size:var(--font-size-xs);color:var(--text-tertiary);background:var(--bg-card-hover);border-radius:var(--radius-full);font-weight:var(--font-weight-medium);padding:1px 8px}.kanban-cards{gap:var(--space-2);border-radius:var(--radius-md);min-height:80px;transition:background var(--transition-fast);flex-direction:column;flex:1;padding:2px;display:flex;overflow-y:auto}.kanban-cards.drag-over{outline:2px dashed var(--color-primary);outline-offset:-2px;background:#6366f10d}.kanban-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--space-3);cursor:grab;transition:all var(--transition-fast);box-shadow:var(--shadow-card);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:relative}.kanban-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.kanban-card:active{cursor:grabbing}.kanban-card.dragging{opacity:.9;box-shadow:var(--shadow-xl);border-color:var(--color-primary);z-index:1000;transform:scale(1.05)rotate(2deg)}.kanban-card-priority-bar{border-radius:var(--radius-lg) var(--radius-lg) 0 0;height:3px;position:absolute;top:0;left:0;right:0}.kanban-card-priority-high{background:var(--color-danger)}.kanban-card-priority-medium{background:var(--color-warning)}.kanban-card-priority-low{background:var(--color-info)}.kanban-card-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);line-height:var(--line-height-tight);margin-bottom:var(--space-2);margin-top:var(--space-1)}.kanban-card-meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.kanban-card-date{font-size:var(--font-size-xs);color:var(--text-tertiary);align-items:center;gap:var(--space-1);display:flex}.kanban-card-date.overdue{color:var(--color-danger)}.kanban-card-footer{margin-top:var(--space-2);justify-content:space-between;align-items:center;display:flex}.kanban-card-progress-mini{margin-right:var(--space-2);flex:1}.kanban-add-card{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px dashed var(--border-color);border-radius:var(--radius-lg);cursor:pointer;color:var(--text-tertiary);font-size:var(--font-size-sm);transition:all var(--transition-fast);background:0 0;width:100%;display:flex}.kanban-add-card:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-subtle)}.kanban-add-column{flex-shrink:0;align-items:flex-start;width:220px;display:flex}.kanban-add-column-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px dashed var(--border-color);border-radius:var(--radius-lg);cursor:pointer;color:var(--text-tertiary);font-size:var(--font-size-sm);transition:all var(--transition-fast);white-space:nowrap;background:0 0;display:flex}.kanban-add-column-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.modal-overlay{background:var(--bg-modal-overlay);z-index:var(--z-modal);padding:var(--space-4);justify-content:center;align-items:center;animation:.2s forwards overlayIn;display:flex;position:fixed;inset:0}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-card);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:600px;max-height:90vh;animation:modalIn .25s var(--transition-spring) forwards;flex-direction:column;display:flex;overflow:hidden}@keyframes modalIn{0%{opacity:0;transform:scale(.95)translateY(-10px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-sm{max-width:400px}.modal-lg{max-width:760px}.modal-header{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border-color);flex-shrink:0;display:flex}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);flex:1}.modal-close{border-radius:var(--radius-md);width:28px;height:28px;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.modal-close:hover{background:var(--bg-card-hover);color:var(--text-primary)}.modal-body{padding:var(--space-6);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.modal-footer{justify-content:flex-end;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--border-color);flex-shrink:0;display:flex}.form-group{gap:var(--space-2);flex-direction:column;display:flex}.form-group-row{gap:var(--space-4);display:flex}.form-group-row .form-group{flex:1}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary)}.form-label span{color:var(--color-danger);margin-left:2px}.form-input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--bg-input);color:var(--text-primary);transition:all var(--transition-fast);height:36px}.form-input:focus{border-color:var(--border-color-focus);box-shadow:var(--shadow-focus);outline:none}.form-textarea{width:100%;padding:var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--bg-input);color:var(--text-primary);transition:all var(--transition-fast);resize:vertical;min-height:80px;line-height:var(--line-height-relaxed)}.form-textarea:focus{border-color:var(--border-color-focus);box-shadow:var(--shadow-focus);outline:none}.form-select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--bg-input);color:var(--text-primary);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:16px;height:36px;padding-right:30px}.form-select:focus{border-color:var(--border-color-focus);box-shadow:var(--shadow-focus);outline:none}.progress-slider-wrap{align-items:center;gap:var(--space-3);display:flex}.progress-slider{accent-color:var(--color-primary);cursor:pointer;background:0 0;border:none;flex:1;margin:0;padding:0}.progress-value{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-primary);text-align:right;width:36px}.color-picker-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.color-swatch{border-radius:var(--radius-full);cursor:pointer;width:24px;height:24px;transition:all var(--transition-fast);border:2px solid #0000}.color-swatch:hover{transform:scale(1.2)}.color-swatch.active{border-color:var(--text-primary)}.task-modal-title-input{width:100%;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);line-height:var(--line-height-tight);background:0 0;border:none;outline:none;padding:0}.task-modal-title-input::placeholder{color:var(--text-tertiary)}.share-url-box{gap:var(--space-2);padding:var(--space-3);background:var(--bg-app);border:1px solid var(--border-color);border-radius:var(--radius-md);align-items:center;display:flex}.share-url-text{font-size:var(--font-size-sm);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:monospace;overflow:hidden}.project-color-row{gap:var(--space-2);display:flex}.project-color-btn{border-radius:var(--radius-full);cursor:pointer;width:32px;height:32px;transition:all var(--transition-fast);border:3px solid #0000}.project-color-btn:hover{transform:scale(1.15)}.project-color-btn.selected{border-color:var(--text-primary);box-shadow:var(--shadow-md)}.color-picker-grid{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.color-picker-swatch{border-radius:var(--radius-full);cursor:pointer;border:2.5px solid #0000;outline:none;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;transition:all .15s;display:flex;position:relative}.color-picker-swatch:hover{transform:scale(1.12)}.color-picker-swatch.selected{border-color:var(--text-primary);transform:scale(1.12)}.color-picker-swatch.color-auto{background:var(--bg-app);border:2px dashed var(--border-color)}.color-picker-swatch.color-auto.selected{border-style:solid;border-color:var(--text-primary)}.color-auto-label{color:var(--text-tertiary);pointer-events:none;font-size:8px;font-weight:700;line-height:1}.color-picker-swatch.color-auto.selected .color-auto-label{display:none}.color-picker-check{color:#fff;pointer-events:none;filter:drop-shadow(0 1px 1px #0000004d);font-size:13px;font-weight:900;line-height:1;animation:.2s checkPop}.color-picker-swatch.color-auto .color-picker-check{color:var(--text-primary);filter:none}@keyframes checkPop{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}.task-modal-dependencies{gap:var(--space-2);max-height:150px;padding:var(--space-2);border:1px solid var(--border-color-light);border-radius:var(--radius-md);background:var(--bg-app);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid;overflow-y:auto}.dependency-item{align-items:center;gap:var(--space-2);font-size:var(--font-size-xs);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:4px;transition:background .2s;display:flex}.dependency-item:hover{background:var(--bg-card-hover);color:var(--text-primary)}.dependency-item input{margin:0}#auth-container{background-color:var(--bg-app);justify-content:center;align-items:center;min-height:100vh;font-family:Inter,Noto Sans JP,sans-serif;display:flex}.auth-card{background:var(--bg-card);border:1px solid var(--border-color);text-align:center;border-radius:12px;width:100%;max-width:400px;padding:32px;box-shadow:0 10px 25px #0000001a}.auth-logo{color:var(--text-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6,#a78bfa);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:8px;font-size:32px;font-weight:700}.auth-title{color:var(--text-primary);margin-bottom:24px;font-size:20px;font-weight:600}.auth-form{flex-direction:column;gap:16px;display:flex}.auth-input-group{text-align:left;flex-direction:column;gap:4px;display:flex}.auth-input-group label{color:var(--text-secondary);font-size:13px;font-weight:500}.auth-input-group input{border:1px solid var(--border-color);background:var(--bg-app);color:var(--text-primary);border-radius:6px;padding:10px 12px;font-size:14px;transition:all .2s}.auth-input-group input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 2px #6366f133}.auth-btn{background:var(--text-primary);color:var(--bg-card);cursor:pointer;border:none;border-radius:6px;margin-top:8px;padding:12px;font-size:15px;font-weight:600;transition:background .2s}.auth-btn:hover{opacity:.9;background:#000}.auth-btn-admin{background:#7c3aed}.auth-btn-admin:hover{opacity:1;background:#6d28d9}.auth-toggle{color:var(--text-secondary);margin-top:24px;font-size:13px}.auth-toggle a{color:var(--color-primary);cursor:pointer;font-weight:500;text-decoration:none}.auth-toggle a:hover{text-decoration:underline}.header-hamburger{display:none}.sidebar-backdrop{z-index:calc(var(--z-sidebar) - 1);background:#00000080;animation:.25s forwards backdropIn;display:none;position:fixed;inset:0}.sidebar-backdrop.visible{display:block}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}@media (width<=768px){.sidebar{height:100%;z-index:var(--z-sidebar);transition:transform .28s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:4px 0 24px #00000059;width:var(--sidebar-width)!important}.sidebar.mobile-open{transform:translate(0)}.sidebar-toggle{display:none}.header{padding:0 var(--space-3);gap:var(--space-2)}.header-hamburger{border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;display:flex}.header-hamburger:hover{background:var(--bg-card-hover);color:var(--text-primary)}.header-project-name{max-width:100px;font-size:var(--font-size-sm)}.header-divider,.header-tab span:not(.header-tab-icon){display:none}.header-tab{padding:var(--space-1) var(--space-2);justify-content:center;min-width:36px}.header-search{display:none}.header-add-btn{padding:0 var(--space-3);justify-content:center;width:36px;height:36px;font-size:0}.header-add-btn:before{content:"+";font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#fff}.header-action-btn{width:36px;height:36px}.modal-overlay{align-items:flex-end;padding:0}.modal,.modal-sm,.modal-md,.modal-lg{border-radius:20px 20px 0 0;width:100%;max-height:88vh;animation:.3s cubic-bezier(.32,.72,0,1) forwards mobileSheetIn;max-width:100%!important}@keyframes mobileSheetIn{0%{opacity:.8;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.toast-container{top:var(--space-4);bottom:auto;right:var(--space-3);left:var(--space-3)}.toast{min-width:unset;width:100%}#auth-container{align-items:flex-start;padding-top:40px}.auth-card{border-radius:16px;max-width:100%;margin:0 12px;padding:28px 20px}.auth-input-group input{padding:13px 12px;font-size:16px}.auth-btn{padding:14px}.gantt-toolbar{-webkit-overflow-scrolling:touch;gap:var(--space-2);padding:var(--space-2) var(--space-3);flex-wrap:nowrap;overflow-x:auto}.form-group-row{gap:var(--space-3);flex-direction:column}.header-tab,.header-action-btn,.header-hamburger,.sidebar-add-btn,.project-item{min-height:44px}.sidebar-add-btn{width:28px;height:28px}.kanban-board{-webkit-overflow-scrolling:touch;overflow-x:auto}.context-menu-item{padding:var(--space-3) var(--space-4);min-height:44px}.modal-body{padding:var(--space-4)}.modal-header,.modal-footer{padding:var(--space-3) var(--space-4)}.form-input,.form-textarea,.form-select,.header-search-input{font-size:16px}}
