@font-face{font-family:DM Sans;font-style:normal;font-weight:400 500;font-display:swap;src:url(../fonts/DMSans-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:400 500;font-display:swap;src:url(../fonts/DMSans-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg-primary: #ffffff;--bg-secondary: #f5f6f8;--bg-tertiary: #ecedf0;--bg-hover: #e8eaed;--border-color: #e0e2e6;--border-light: #eeeff2;--text-primary: #1a1d23;--text-secondary: #5f6368;--text-muted: #9aa0a6;--accent-blue: #4A90D9;--weekend-bg: #f9f9fb;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--sidebar-width: 240px;--right-sidebar-width: 280px;--topbar-height: 44px;--transition: .15s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:13px;color:var(--text-primary);background:var(--bg-primary);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased}input,select,button{font-family:inherit;font-size:inherit}input,textarea{user-select:text;-webkit-user-select:text}.app{display:flex;flex-direction:column;height:100vh;width:100vw}.app-body{display:flex;flex:1;overflow:hidden}.top-bar{height:var(--topbar-height);background:var(--bg-primary);border-bottom:none;display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0;z-index:100}.top-bar-left{display:flex;align-items:center;gap:24px}.top-bar-center{display:flex;align-items:center;justify-content:center;position:relative}.top-bar-right{display:flex;align-items:center;gap:8px}.top-bar-brand{display:flex;align-items:center}.brand-logo{height:22px;width:auto;display:block}.version-badge{font-size:10px;color:var(--text-muted);margin-left:6px;font-weight:400;letter-spacing:.2px}.top-bar-menus{display:flex;gap:2px}.menu-dropdown{position:relative}.menu-button{background:none;border:none;padding:6px 12px;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-weight:400;transition:all var(--transition)}.menu-button:hover,.menu-button.active{background:var(--bg-secondary);color:var(--text-primary)}.dropdown-panel{position:absolute;top:calc(100% + 4px);left:0;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:200px;padding:4px;z-index:1000;animation:dropdown-in .12s ease-out}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{padding:8px 12px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;gap:8px;transition:background var(--transition)}.dropdown-item:hover{background:var(--bg-secondary)}.dropdown-item.active{background:var(--bg-tertiary)}.dropdown-item-small{font-size:12px;padding:6px 12px}.dropdown-icon{font-size:14px;width:20px;text-align:center}.dropdown-check{margin-left:auto;color:var(--accent-blue);font-weight:600}.dropdown-shortcut{margin-left:auto;font-size:11px;color:var(--text-muted)}.dropdown-hint{margin-left:auto;font-size:10px;color:var(--text-muted)}.dropdown-separator{height:1px;background:var(--border-light);margin:4px 8px}.dropdown-label{padding:6px 12px 4px;font-size:11px;font-weight:400;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.undo-btn,.redo-btn{opacity:.7}.undo-btn:hover,.redo-btn:hover{opacity:1}.undo-btn:disabled,.redo-btn:disabled{opacity:.25;pointer-events:none}.autosave-indicator{font-size:10px;color:var(--text-muted);padding:3px 8px;background:var(--bg-secondary);border-radius:10px}.saved-indicator{font-size:11px;color:var(--text-secondary);font-weight:400}.saved-indicator.muted{color:var(--text-muted);font-weight:400}.saved-indicator.unsaved{color:#c0792a}.auto-saved-flash{font-size:11px;color:var(--text-muted);font-weight:400;position:absolute;left:calc(100% + 6px);top:50%;transform:translateY(-50%);white-space:nowrap;pointer-events:none;opacity:1;animation:autoSavedFade 2s ease-out forwards}@keyframes autoSavedFade{0%{opacity:1}70%{opacity:1}to{opacity:0}}.window-controls{display:flex;align-items:center;gap:0;margin-left:8px}.window-ctrl-btn{background:none;border:none;width:36px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:all var(--transition);border-radius:0}.window-ctrl-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.window-ctrl-btn.close-btn:hover{background:#e74c3c;color:#fff}.window-ctrl-btn svg{display:block}.icon-btn{background:none;border:none;width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:all var(--transition)}.icon-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.icon-btn:disabled{opacity:.3;pointer-events:none}.icon-btn.active-filter{color:var(--accent-blue);background:#4a90d91a}.icon-btn-tiny{background:none;border:none;width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);font-size:14px;font-weight:500;transition:all var(--transition);flex-shrink:0;opacity:.35}.gantt-label-row:hover .icon-btn-tiny,.label-project:hover .icon-btn-tiny,.label-group:hover .icon-btn-tiny,.column-row:hover .icon-btn-tiny,.column-header-cell:hover .icon-btn-tiny{opacity:1}.icon-btn-tiny:hover{background:var(--bg-tertiary);color:var(--accent-blue)}.sidebar-collapsed{width:28px;background:var(--bg-primary);border-right:none;display:flex;flex-direction:column;align-items:center;padding-top:8px;flex-shrink:0}.sidebar-collapsed.right{border-right:none;border-left:none}.sidebar-expand-btn{background:none;border:none;width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted)}.sidebar-expand-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 8px;flex-shrink:0}.sidebar-title{font-weight:400;font-size:13px;color:var(--text-primary)}.sidebar-actions{display:flex;gap:2px}.project-library{width:var(--sidebar-width);background:var(--bg-primary);border-right:none;position:relative;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.welcome-overlay{position:fixed;inset:0;z-index:21000;background:#1a1d2373;display:flex;align-items:center;justify-content:center;-webkit-app-region:no-drag}.welcome-modal{width:540px;max-width:calc(100vw - 48px);max-height:calc(100vh - 48px);overflow-y:auto;background:var(--bg-primary);border-radius:16px;box-shadow:0 24px 70px #00000059;padding:40px 44px 30px;text-align:left;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.welcome-logo{height:38px;width:auto;display:block;margin-bottom:24px}.welcome-title{font-size:22px;font-weight:600;color:var(--text-primary);margin:0 0 18px}.welcome-body{font-size:14px;line-height:1.75;color:var(--text-secondary);margin:0 0 18px}.welcome-link{color:var(--accent-blue);text-decoration:none}.welcome-link:hover{text-decoration:underline}.welcome-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:28px}.welcome-dontshow{font-size:12.5px;color:var(--text-secondary);margin:0}.welcome-shortcuts-intro{margin-bottom:10px}.welcome-shortcuts{list-style:none;margin:0 0 18px;padding:0;font-size:14px;line-height:2;color:var(--text-secondary)}.welcome-shortcuts li{margin-bottom:9px}.welcome-shortcuts .shortcut-keys{margin-right:6px}.sidebar-resize-handle{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;z-index:5;-webkit-app-region:no-drag}.sidebar-resize-handle:hover:after{content:"";position:absolute;top:0;right:0;width:1px;height:100%;background:var(--border-color)}.sidebar-search{padding:0 12px 8px;position:relative}.search-input{width:100%;padding:5px 24px 5px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);font-size:11px;outline:none;box-sizing:border-box}.search-input::placeholder{color:var(--text-muted)}.search-input:focus{border-color:var(--accent-blue)}.search-clear{position:absolute;right:16px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}.search-clear:hover{color:var(--text-primary)}.project-item.drop-before{border-top:2px solid var(--accent-blue)}.project-item.drop-after{border-bottom:2px solid var(--accent-blue)}.folder-section.drop-before{border-top:2px solid var(--accent-blue)}.folder-section.drop-after{border-bottom:2px solid var(--accent-blue)}.folder-section.dragging{opacity:.5}.project-list{flex:1;overflow-y:auto;padding:0 8px 8px}.project-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);cursor:default;transition:background var(--transition)}.project-item:hover{background:var(--bg-secondary)}.project-item.dragging{opacity:.5}.project-checkbox{width:16px;height:16px;border-radius:4px;cursor:pointer;accent-color:var(--accent-blue);flex-shrink:0}.color-swatch-wrapper{position:relative;flex-shrink:0}.color-swatch{width:18px;height:18px;border-radius:5px;cursor:pointer;border:2px solid rgba(255,255,255,.3);box-shadow:0 0 0 1px #0000001a;transition:transform var(--transition);background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.color-swatch:hover{transform:scale(1.1)}.color-picker-popup{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:8px;display:grid;grid-template-columns:repeat(5,1fr);gap:4px;z-index:1000;width:160px;animation:dropdown-in .12s ease-out}.color-picker-swatch{width:24px;height:24px;border-radius:5px;cursor:pointer;border:2px solid transparent;transition:all var(--transition);background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.color-picker-swatch:hover{transform:scale(1.15)}.color-picker-swatch.selected{border-color:var(--text-primary);box-shadow:0 0 0 2px var(--bg-primary),0 0 0 3px var(--text-primary)}.color-picker-custom{grid-column:span 5;width:100%;height:28px;border:none;padding:0;cursor:pointer;border-radius:4px;margin-top:4px}.project-name{flex:1;font-size:13px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-section{margin-bottom:4px}.folder-header{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);font-size:12px;font-weight:400;transition:background var(--transition)}.folder-header:hover{background:var(--bg-secondary)}.folder-collapse-icon{font-size:8px;width:12px;color:var(--text-muted)}.folder-icon{color:var(--text-muted);flex-shrink:0}.folder-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-count{font-size:10px;color:var(--text-muted);background:var(--bg-tertiary);padding:1px 6px;border-radius:8px}.folder-contents{padding-left:12px}.folder-contents .folder-section.subfolder{margin-bottom:2px}.folder-drag-over{background:#4a90d914;border-radius:var(--radius-sm)}.folder-collapse-chevron{flex-shrink:0;color:var(--text-muted);transition:transform var(--transition)}.empty-state{text-align:center;padding:24px 16px;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;gap:12px}.empty-state.small{padding:12px;font-size:12px}.empty-state .btn-small{background:var(--bg-secondary);border-color:var(--border-color);color:var(--text-secondary)}.inline-edit-input{border:1px solid var(--accent-blue);background:var(--bg-primary);border-radius:4px;padding:2px 6px;font-size:inherit;width:100%;outline:none;box-shadow:0 0 0 2px #4a90d933;user-select:text;-webkit-user-select:text}.inline-edit-text{cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-small{padding:5px 12px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;font-size:12px;font-weight:400;transition:all var(--transition)}.btn-small:hover{background:var(--bg-secondary)}.btn-small.primary{background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),var(--accent-blue);border:none;color:#fff}.btn-small.primary:hover{background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),#3a7bc8}.gantt-sheet{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary);min-width:0;border-radius:10px;border:1px solid var(--border-color);box-shadow:0 2px 7px #0000001a;margin:6px;z-index:1}.gantt-grid-wrapper.alt-drag-active,.gantt-grid-wrapper.alt-drag-active *{cursor:copy!important}.gantt-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--border-light);flex-shrink:0;background:var(--bg-primary);gap:12px;border-radius:10px 10px 0 0}.gantt-toolbar-left,.gantt-toolbar-right{display:flex;align-items:center;gap:8px}.today-btn{display:flex;align-items:center;gap:4px;font-size:11px;padding:4px 10px;background:var(--bg-secondary);border-color:var(--border-color);color:var(--text-secondary)}.zoom-controls{display:flex;align-items:center;gap:4px}.zoom-btn{font-size:13px;font-weight:400;padding:3px 8px;min-width:28px;background:var(--bg-secondary);border-color:var(--border-color);color:var(--text-secondary)}.zoom-label{font-size:11px;color:var(--text-secondary);min-width:36px;text-align:center;font-weight:400}.weekend-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);cursor:pointer}.weekend-toggle input{accent-color:var(--accent-blue)}.filter-chip{display:inline-flex;align-items:center;gap:6px;height:25px;padding:0 4px 0 8px;border:1px solid var(--border-color);border-radius:14px;background:#4a90d914;font-size:12px;max-width:220px}.filter-chip-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;flex-shrink:0;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.filter-chip-swatch.filter-chip-event{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background-image:none}.filter-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.filter-chip-x{background:none;border:none;padding:2px;border-radius:4px;cursor:pointer;color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;transition:background var(--transition)}.filter-chip-x:hover{background:#0000000f;color:var(--text-primary)}.filter-menu-parent{display:flex;align-items:center;justify-content:space-between;position:relative;padding-right:8px;gap:8px}.filter-menu-parent.disabled{opacity:.4;cursor:default}.filter-menu-parent .dropdown-arrow{color:var(--text-muted);font-size:10px}.filter-submenu-item{display:flex;align-items:center;gap:6px}.filter-status-banner{height:28px;display:flex;align-items:center;justify-content:center;background:#4a90d914;color:var(--text-secondary);font-size:12px;border-bottom:1px solid var(--border-color)}.collapse-btn.filter-locked,.icon-btn-tiny.filter-locked{opacity:.35;cursor:default}.notes-counter{font-size:10px;color:var(--text-muted, #999);flex-shrink:0;margin-left:4px}.filter-lock-hint{position:fixed;z-index:10001;max-width:230px;padding:5px 10px;background:var(--text-primary, #1A1D23);color:#fff;font-size:12px;line-height:1.35;border-radius:6px;box-shadow:0 4px 14px #0000002e;pointer-events:none;animation:filter-lock-hint-pop 2s ease forwards}@keyframes filter-lock-hint-pop{0%{opacity:0;transform:translateY(4px)}6%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0}}.filter-entry-btn{color:var(--text-muted)}.filter-entry-btn:hover{color:var(--accent-blue)}.filter-entry-btn.active{color:var(--accent-blue);background:#4a90d91f}.filter-sidebar-indicator{display:inline-flex;align-items:center;gap:4px;margin:8px 14px 0;padding:3px 8px;background:#4a90d91a;color:var(--accent-blue);border-radius:10px;font-size:11px;font-weight:500}.filter-blocked-toast{margin:8px 14px 0;padding:6px 10px;background:var(--bg-tertiary);color:var(--text-secondary);border-radius:6px;font-size:11px;line-height:1.3}.gantt-content{display:flex;flex:1;overflow:hidden}.gantt-grid-wrapper{flex:1;overflow:hidden;position:relative;cursor:crosshair}.gantt-date-header{border-bottom:1px solid var(--border-color);overflow:hidden;position:relative;background:var(--bg-secondary);z-index:5}.date-header-months{position:relative;height:24px;border-bottom:1px solid var(--border-light)}.month-header{position:absolute;height:24px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:400;color:var(--text-secondary);border-right:1px solid var(--border-light)}.date-header-weeks{position:relative;height:13px;border-bottom:1px solid var(--border-light)}.week-num-cell{position:absolute;height:13px;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:400;color:var(--text-muted);border-right:1px solid var(--border-light);overflow:hidden;white-space:nowrap}.week-num-cell.today{color:#e74c3c;font-weight:600}.date-header-days{position:relative;height:30px}.day-header{position:absolute;height:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;font-weight:500;color:var(--text-secondary);border-right:1px solid var(--border-light);line-height:1.1;gap:0}.day-letter{font-size:10px;font-weight:400}.day-number{font-size:9px;font-weight:400;color:var(--text-muted)}.day-header.weekend{color:var(--text-muted);background:var(--weekend-bg)}.day-header.weekend .day-letter{color:var(--text-muted)}.day-header.weekend .day-number{opacity:.6}.gantt-grid{overflow:hidden;position:relative}.grid-inner{position:relative}.grid-day-col{position:absolute;top:0;border-right:1px solid var(--border-light)}.grid-day-col.weekend{background:var(--weekend-bg)}.grid-day-col.grid-month-boundary{border-left:1px solid var(--border-color)}.grid-day-col.weekend-gap{border-left:1px solid #d0d2d6}.day-header.month-boundary{border-left:1px solid var(--border-color)}.day-header.weekend-gap{border-left:1px solid #d0d2d6}.zoom-compact .day-header.weekend-gap .day-letter,.zoom-compact .day-header.weekend-gap .day-number{transform:translate(2px)}.zoom-compact .day-header.weekend-gap-fri .day-letter,.zoom-compact .day-header.weekend-gap-fri .day-number{transform:translate(-2px)}.grid-row-line{position:absolute;left:0;height:1px;background:var(--border-light)}.today-marker{position:absolute;top:0;width:2px;background:#e74c3c;opacity:.5;z-index:1;pointer-events:none}.day-header.today{font-weight:700}.day-header.today .day-letter{color:#e74c3c}.day-header.today .day-number{color:#e74c3c;font-weight:400}.day-header.week-header{flex-direction:row;align-items:center;justify-content:center;overflow:hidden}.week-label{font-size:9px;font-weight:400;color:var(--text-muted);white-space:nowrap}.day-header.week-header.today .week-label{color:#e74c3c;font-weight:600}.grid-day-col.week-col{border-right:1px solid var(--border-light)}.jump-flash-highlight{position:absolute;top:0;z-index:2;pointer-events:none;background:#4a90d92e;animation:jump-flash-fade 1.6s ease-out forwards}@keyframes jump-flash-fade{0%{opacity:1}55%{opacity:1}to{opacity:0}}.date-jump-popup{z-index:20000;width:264px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:10px}.date-jump-year{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.date-jump-year-label{font-size:13px;font-weight:600;color:var(--text-primary)}.date-jump-months{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:8px}.date-jump-month{padding:4px 0;font-size:11px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer}.date-jump-month:hover{background:var(--bg-hover)}.date-jump-month.selected{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.date-jump-month.current:not(.selected){border-color:var(--accent-blue);color:var(--accent-blue)}.date-jump-weeks{display:flex;flex-direction:column;gap:3px}.date-jump-week{display:flex;align-items:center;justify-content:space-between;padding:5px 8px;font-size:11.5px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;text-align:left}.date-jump-week:hover{background:#4a90d914;border-color:var(--accent-blue)}.date-jump-week.current{border-color:#e74c3c}.date-jump-now{font-size:10px;color:#e74c3c;font-weight:500}.col-hover-highlight{position:absolute;top:0;z-index:1;pointer-events:none;background:#4a90d90f}.row-hover-highlight{position:absolute;left:0;z-index:1;pointer-events:none;background:#4a90d90f}.column-row.row-hovered{background-color:#4a90d90f}.project-row-bg{pointer-events:none;z-index:1;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);box-sizing:border-box}.drag-highlight-row{pointer-events:none;z-index:0}.project-summary-bar{pointer-events:none;z-index:1}.gantt-box{position:absolute;border-radius:5px;cursor:grab;transition:box-shadow 80ms ease;display:flex;align-items:center;justify-content:center;overflow:hidden;border:none;z-index:2;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.gantt-box:hover{box-shadow:var(--shadow-md);z-index:3}.gantt-box.selected{outline:2px solid rgba(180,180,180,.8);outline-offset:1px;z-index:4}.box-resize-left,.box-resize-right{position:absolute;top:0;width:8px;height:100%;cursor:ew-resize;z-index:5}.box-resize-left{left:0}.box-resize-right{right:0}.gantt-box-preview{position:absolute;border-radius:5px;border:2px dashed;z-index:5;pointer-events:none;opacity:.7}.hour-override-label{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:9px;font-weight:700;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.3);pointer-events:none}.box-label{font-size:10px;font-weight:500;color:#fffffff2;text-shadow:0 1px 2px rgba(0,0,0,.2);pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px;max-width:100%}.gantt-icon{position:absolute;transform:translate(-50%);z-index:10;cursor:grab;width:22px;height:22px;border-radius:5px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #00000040;transition:box-shadow 80ms ease,transform 80ms ease;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.zoom-compact .gantt-icon{width:14px;height:20px;border-radius:4px}.zoom-compact .gantt-icon svg{width:10px;height:10px}.gantt-icon:hover{transform:translate(-50%,-2px);box-shadow:0 3px 8px #0000004d}.gantt-icon.selected{outline:2px solid rgba(180,180,180,.8);outline-offset:1px;box-shadow:0 1px 4px #00000040}.alt-color-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent);margin-right:2px}.column-area{flex-shrink:0;border-right:1px solid var(--border-color);overflow:hidden;background:var(--bg-primary)}.column-headers{border-bottom:1px solid var(--border-color);background:var(--bg-secondary);display:flex;flex-direction:column;position:relative;z-index:5}.column-header-row{display:flex;align-items:center;height:24px;padding:0 4px;border-bottom:1px solid var(--border-light)}.column-header-cols{display:flex;height:26px}.column-header-cell{display:flex;align-items:center;padding:0 8px;font-size:11px;font-weight:400;color:var(--text-secondary);border-right:1px solid var(--border-light);position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.column-header-label{flex:1;overflow:hidden;text-overflow:ellipsis}.column-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}.column-resize-handle:hover{background:var(--accent-blue);opacity:.5}.column-row{display:flex;border-bottom:1px solid var(--border-light);overflow:hidden}.column-row-project{background:var(--bg-secondary)}.column-row-group{background:#00000008}.column-row-subgroup{background:#00000004}.column-row.row-dragging{opacity:.4}.column-row.row-drop-before{border-top:2px solid var(--accent-blue)}.column-row.row-drop-after{border-bottom:2px solid var(--accent-blue)}.column-row.row-drop-into{background:#3b82f61a;outline:1.5px solid rgba(59,130,246,.4);outline-offset:-1.5px;border-radius:3px}.column-row.row-selected{outline:2px solid rgba(160,165,170,.85);outline-offset:-1px;border-radius:3px;z-index:1}.column-row-bottom-drop{cursor:default}.column-row-bottom-drop.row-drop-before{border-top:2px solid var(--accent-blue)}.column-cell{display:flex;align-items:center;padding:0 4px;overflow:hidden;border-right:1px solid var(--border-light)}.column-cell-value{font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-label-row{display:flex;align-items:center;border-bottom:1px solid var(--border-light);padding:0 8px;overflow:hidden}.gantt-label-project{background:var(--bg-secondary)}.label-project{display:flex;align-items:center;gap:6px;width:100%;padding-left:4px;border-left:3px solid}.label-group{display:flex;align-items:center;gap:4px;width:100%;padding-left:8px}.label-subgroup{display:flex;align-items:center;gap:4px;width:100%;padding-left:20px}.label-activity{display:flex;align-items:center;gap:4px;width:100%;color:var(--text-secondary);font-size:12px}.label-activity.indent-1{padding-left:12px}.label-activity.indent-2{padding-left:24px}.label-activity.indent-3{padding-left:36px}.label-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.collapse-btn{background:none;border:none;width:18px;height:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);font-size:9px;flex-shrink:0;border-radius:3px;transition:all var(--transition)}.collapse-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.exclude-badge{display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);margin-left:2px;opacity:.6;flex-shrink:0}.exclude-badge.cost{opacity:.5}.context-menu{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:180px;padding:4px;z-index:10000;animation:dropdown-in .1s ease-out}.context-menu-item{padding:7px 12px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-primary);transition:background var(--transition)}.context-menu-item:hover{background:var(--bg-secondary)}.context-menu-item.disabled{opacity:.4;pointer-events:none}.context-menu-check{color:var(--accent-blue);font-weight:600;font-size:12px}.context-menu-separator{height:1px;background:var(--border-light);margin:4px 8px}.context-menu-submenu{position:relative}.context-menu-arrow{margin-left:auto;font-size:9px;color:var(--text-muted)}.context-menu-submenu-items{display:none;position:absolute;left:100%;top:-4px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:160px;padding:4px;z-index:10001}.context-menu-submenu:hover .context-menu-submenu-items{display:block}.context-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.context-menu-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;display:inline-block;border:1px solid rgba(0,0,0,.1)}.right-sidebar{width:var(--right-sidebar-width);background:var(--bg-primary);border-left:none;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.right-sidebar-content{flex:1;overflow-y:auto;padding:0 0 12px}.panel-section{padding:14px;border-bottom:1px solid var(--border-light)}.section-title{font-weight:400;font-size:12px;color:var(--text-primary);margin-bottom:10px;display:flex;align-items:center;gap:6px;text-transform:uppercase;letter-spacing:.3px}.section-title-collapsible{cursor:pointer;padding:6px 4px;margin:-6px -4px 6px;border-radius:var(--radius-sm);transition:background var(--transition);display:flex;align-items:center;gap:6px;line-height:1}.section-title-collapsible:hover{background:var(--bg-secondary)}.section-title-collapsible.collapsed{margin-bottom:-6px}.section-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.overview-project{margin-bottom:16px}.overview-project-header{display:flex;align-items:center;gap:8px;padding:6px 0;font-weight:400;font-size:12px;line-height:1.5}.overview-color-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.overview-project-name{flex:1}.overview-project-header-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;gap:6px}.overview-project-header-toggle:hover .overview-project-name{color:var(--accent-blue)}.overview-project-chevron{color:var(--text-muted);transition:transform var(--transition)}.overview-project-total{color:var(--text-secondary);font-weight:400;font-size:11px}.overview-activity{display:flex;align-items:center;gap:8px;padding:4px 0 4px 16px;font-size:12px;line-height:1.5}.overview-activity-name{flex:1;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overview-activity-time{color:var(--text-primary);font-weight:400;font-size:11px;white-space:nowrap}.overview-activity-cost{color:var(--text-secondary);font-size:11px;white-space:nowrap}.overview-project-cost{padding:6px 0 0 16px;font-weight:400;font-size:11px;color:var(--text-primary)}.overview-project-cost.over-budget{color:#e74c3c}.overview-additional-costs{margin-top:4px;border-top:1px dashed var(--border-light);padding-top:4px}.overview-project-notes{padding:0 0 2px 16px;font-size:11px;color:var(--text-muted);font-style:italic}.overview-events{margin-top:4px;border-top:1px dashed var(--border-light);padding-top:4px}.overview-event-row{display:flex;align-items:center;justify-content:space-between;padding:2px 0 2px 16px;font-size:12px;color:var(--text-secondary)}.overview-event-label{font-weight:400}.overview-event-date{font-size:11px;color:var(--text-muted)}.overview-totals{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color)}.overview-total-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;font-size:12px;line-height:1.5}.timer-info{display:flex;flex-direction:column;gap:4px}.timer-activity{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:400}.timer-activity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-project-name{font-size:10px;color:var(--text-muted);margin-left:16px}.timer-display{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;text-align:center;padding:6px 0;color:var(--text-primary)}.timer-buttons-row{display:flex;gap:6px}.btn-timer-start{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:none;border-radius:4px;cursor:pointer;background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),#27ae60;color:#fff;font-size:12px;font-weight:400;flex:1}.btn-timer-start:hover:not(:disabled){background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),#219a52}.btn-timer-start:disabled{opacity:.4;cursor:default}.btn-timer-stop{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:none;border-radius:4px;cursor:pointer;background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),#e74c3c;color:#fff;font-size:12px;font-weight:400;flex:1}.btn-timer-stop:hover:not(:disabled){background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),#c0392b}.btn-timer-stop:disabled{opacity:.4;cursor:default}.btn-timer-dismiss{display:flex;align-items:center;justify-content:center;padding:6px 12px;border:1px solid var(--border-color);border-radius:4px;cursor:pointer;background:var(--bg-secondary);color:var(--text-secondary);font-size:12px;font-weight:400;width:100%;margin-top:4px;transition:all var(--transition)}.btn-timer-dismiss:hover{background:var(--bg-tertiary);color:var(--text-primary)}.exclude-badge.timer{opacity:.4}.exclude-badge.timer.active{opacity:1;color:var(--text-primary)}.gantt-box.timer-active{border:2px solid #333!important;pointer-events:none;z-index:3}.export-logo-clear{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:16px;line-height:1;padding:0;width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--transition)}.export-logo-clear:hover{color:var(--text-primary);background:var(--bg-tertiary)}.option-row input[type=text]{padding:4px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);width:160px;outline:none;font-size:12px}.option-row input[type=text]:focus{border-color:var(--accent-blue);box-shadow:0 0 0 2px #4a90d926}.export-options{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.checkbox-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);cursor:pointer}.checkbox-label.disabled{opacity:.4;pointer-events:none}.checkbox-label input{accent-color:var(--accent-blue)}.export-logo-btn{display:flex;align-items:center;gap:6px;width:100%;padding:6px 8px;border:1px dashed var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;font-size:11px;margin-bottom:10px;transition:all var(--transition)}.export-logo-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.export-logo-btn svg{flex-shrink:0}.export-logo-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.btn-export-primary{width:100%;padding:10px 13px;border:none;border-radius:var(--radius-sm);background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),var(--accent-blue);color:#fff;cursor:pointer;font-size:12px;font-weight:400;display:flex;align-items:center;justify-content:center;gap:6px;transition:all var(--transition);margin-bottom:8px}.btn-export-primary:hover{background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),#3a7bc8}.btn-export-primary:disabled{opacity:.4;pointer-events:none}.export-buttons-secondary{display:flex;gap:6px}.btn-export{flex:1;padding:6px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;font-size:11px;font-weight:400;display:flex;align-items:center;justify-content:center;gap:4px;transition:all var(--transition)}.btn-export:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-export:disabled{opacity:.4;pointer-events:none}.export-icon{font-size:13px}.section-collapse-chevron{flex-shrink:0;color:var(--text-muted);transition:transform var(--transition)}.option-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0;font-size:12px}.option-row.disabled{opacity:.4;pointer-events:none}.option-row label{color:var(--text-secondary);flex-shrink:0}.option-row select,.option-row input[type=number]{padding:4px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);width:110px;outline:none}.option-row select:focus,.option-row input[type=number]:focus{border-color:var(--accent-blue);box-shadow:0 0 0 2px #4a90d926}.option-divider{height:1px;background:var(--border-light);margin:8px 0}.additional-costs-section{margin-top:4px}.additional-costs-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.additional-costs-label{font-size:11px;font-weight:400;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px}.additional-cost-row{display:flex;align-items:center;gap:4px;margin-bottom:4px}.additional-cost-name{flex:1;padding:3px 6px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);font-size:11px;color:var(--text-primary);outline:none;min-width:0}.additional-cost-name:focus{border-color:var(--accent-blue)}.additional-cost-amount{width:70px;padding:3px 6px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);font-size:11px;color:var(--text-primary);outline:none;text-align:right}.additional-cost-amount:focus{border-color:var(--accent-blue)}.legend-subsection{margin-top:4px}.legend-entry-row{display:flex;align-items:center;gap:4px;margin-bottom:4px}.legend-entry-select{padding:3px 4px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);font-size:11px;color:var(--text-primary);outline:none;max-width:110px}.legend-entry-select:focus{border-color:var(--accent-blue)}.legend-entry-name{flex:1;padding:3px 6px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);font-size:11px;color:var(--text-primary);outline:none;min-width:0}.legend-entry-name:focus{border-color:var(--accent-blue)}.legend-add-select{padding:2px 4px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);font-size:11px;color:var(--accent-blue);outline:none;cursor:pointer}.legend-color-swatch-inline{width:18px;height:18px;border-radius:4px;display:inline-block;flex-shrink:0;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.overview-legend{padding-top:2px}.overview-legend-title{font-size:12px;font-weight:400;margin-bottom:4px;color:var(--text-primary)}.overview-legend-row{display:flex;align-items:center;gap:6px;padding:2px 0 2px 16px;font-size:12px;color:var(--text-primary)}.overview-legend-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.overview-legend-divider{border-top:1px solid var(--border-light);margin:4px 16px}.event-icon-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;padding:4px}.event-icon-grid-item{width:26px;height:26px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .15s,transform .1s;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.event-icon-grid-item:hover{opacity:.85;transform:scale(1.12)}.context-menu-grid-picker{position:absolute;left:100%;top:-4px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;box-shadow:0 4px 16px #00000059;padding:4px;display:none;width:160px;grid-template-columns:repeat(5,1fr);gap:3px}.context-menu-submenu:hover>.context-menu-grid-picker{display:grid}.grid-picker-header-btn{grid-column:1 / -1;padding:4px 6px;font-size:11px;color:var(--text-secondary);cursor:pointer;text-align:center;border-radius:4px;border:1px solid var(--border-color);background:var(--bg-primary);margin-bottom:2px}.grid-picker-header-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.legend-event-grid{margin-top:6px}.legend-add-event-wrapper{position:relative;margin-top:4px}.legend-add-event-btn{background:var(--bg-secondary);border:1px dashed var(--border-color);border-radius:4px;padding:4px 10px;font-size:11px;color:var(--text-muted);cursor:pointer;width:100%;text-align:left}.legend-add-event-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.legend-popup-picker{position:absolute;left:0;bottom:calc(100% + 4px);z-index:1000;display:grid;grid-template-columns:repeat(5,1fr);gap:3px;padding:4px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;box-shadow:0 4px 16px #00000059;width:160px}.legend-color-picker-item{width:26px;height:26px;border-radius:4px;cursor:pointer;transition:opacity .15s,transform .1s;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.legend-color-picker-item:hover{opacity:.85;transform:scale(1.12)}.legend-event-icon-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;flex-shrink:0;background-image:linear-gradient(to bottom,rgba(255,255,255,.3),transparent)}.rate-column-input{width:100%;padding:2px 4px;border:1px solid transparent;border-radius:3px;background:transparent;font-size:11px;color:var(--text-secondary);outline:none;text-align:right}.rate-column-input:focus{border-color:var(--accent-blue);background:var(--bg-primary);box-shadow:0 0 0 2px #4a90d926}.custom-text-cell{cursor:default;width:100%}.custom-text-edit-wrap{display:flex;align-items:center;width:100%;gap:2px}.custom-text-input{flex:1;min-width:0;padding:2px 4px;border:1px solid var(--accent-blue);border-radius:3px;background:var(--bg-primary);font-size:11px;color:var(--text-primary);outline:none;box-shadow:0 0 0 2px #4a90d926}.custom-text-counter{font-size:9px;color:var(--text-tertiary);white-space:nowrap;flex-shrink:0}.hour-edit-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:10000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.hour-edit-modal{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:24px;min-width:280px}.hour-edit-modal h4{margin-bottom:4px;font-size:15px}.hour-edit-modal p{color:var(--text-secondary);margin-bottom:12px;font-size:12px}.hour-edit-fields{display:flex;gap:12px;margin-bottom:12px}.hour-edit-field{flex:1;display:flex;flex-direction:column;gap:4px}.hour-edit-field label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px}.hour-edit-modal input{width:100%;padding:8px 12px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:14px;outline:none;box-sizing:border-box}.hour-edit-modal input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px #4a90d926}.hour-edit-actions{display:flex;gap:8px;justify-content:flex-end}.shortcuts-modal{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:24px;min-width:400px;max-width:520px;max-height:80vh;overflow-y:auto}.shortcuts-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.shortcuts-modal-header h4{font-size:15px;font-weight:600;margin:0}.shortcuts-category{margin-bottom:16px}.shortcuts-category:last-child{margin-bottom:0}.shortcuts-category-title{font-size:11px;font-weight:400;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border-light)}.shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;font-size:12px;color:var(--text-secondary)}.shortcut-keys{font-family:SF Mono,Consolas,monospace;font-size:11px;background:var(--bg-secondary);padding:2px 8px;border-radius:4px;border:1px solid var(--border-color);color:var(--text-primary);white-space:nowrap}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.export-modal-overlay{position:fixed;inset:0;z-index:20000;background:#00000080;display:flex;align-items:center;justify-content:center}.snapshot-flash{position:fixed;inset:0;z-index:19999;background:#fff;pointer-events:none;animation:snapshotFlash .9s ease-out forwards}@keyframes snapshotFlash{0%{opacity:1}45%{opacity:1}to{opacity:0}}.export-modal{width:94vw;max-width:1900px;height:92vh;min-width:1000px;min-height:560px;background:var(--bg-primary);border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;overflow:hidden}.export-modal-preview{flex:1;min-width:0;background:#f9fafb;border-right:1px solid var(--border-color);overflow:hidden;position:relative}.export-preview-iframe{width:100%;height:100%;border:none;background:#fff}.export-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:14px}.export-modal-panel{width:320px;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-primary)}.export-panel-title{padding:16px 16px 12px;font-size:15px;font-weight:600;color:var(--text-primary);border-bottom:1px solid var(--border-light)}.export-tab-switch{display:flex;gap:0;padding:8px 16px;border-bottom:1px solid var(--border-light)}.export-tab-btn{flex:1;padding:6px 0;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);font-size:12px;font-weight:400;cursor:pointer;transition:all .15s}.export-tab-btn:first-child{border-radius:6px 0 0 6px;border-right:none}.export-tab-btn:not(:first-child):not(:last-child){border-right:none}.export-tab-btn:last-child{border-radius:0 6px 6px 0}.export-tab-btn.active{background:linear-gradient(to bottom,rgba(255,255,255,.3),transparent),var(--accent-blue);color:#fff;border-color:transparent}.export-panel-options{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.export-option-group{display:flex;flex-direction:column;gap:6px}.export-option-label{font-size:11px;font-weight:400;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.export-quick-filter{background:none;border:none;color:var(--accent-blue);font-size:10px;cursor:pointer;padding:0;text-transform:none;letter-spacing:0}.export-quick-filter:hover{text-decoration:underline}.export-checklist{max-height:320px;overflow-y:auto;border:1px solid var(--border-light);border-radius:6px;padding:4px 0}.checklist-header{display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:pointer;font-size:12px;font-weight:400;color:var(--text-primary)}.checklist-header:hover{background:var(--bg-secondary)}.checklist-chevron{font-size:10px;color:var(--text-muted);width:10px;flex-shrink:0}.checklist-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.checklist-activity{display:flex;align-items:center;gap:6px;padding:3px 8px;font-size:11px}.checklist-activity input{accent-color:var(--accent-blue);flex-shrink:0}.checklist-act-name{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:60px}.checklist-act-info{color:var(--text-muted);font-size:10px;white-space:nowrap;margin-left:auto}.export-event-counter{padding:6px 8px;font-size:12px;color:var(--text-secondary);background:var(--bg-secondary);border-radius:6px;text-align:center}.export-event-counter.warning{color:#e67e22;background:#fef5e7}.export-counter-tip{font-size:10px;color:var(--text-muted);text-align:center;padding:2px 0}.export-panel-buttons{padding:12px 16px;border-top:1px solid var(--border-light)}.export-panel-close{padding:8px 16px 12px;border-top:1px solid var(--border-light)}.calendar-preview-scroll{padding:24px;overflow:auto;height:100%;white-space:nowrap}.cal-month{border:1px solid #e0e2e6;border-radius:8px;overflow:hidden}.cal-month-header{background:#f5f6f8;padding:8px 12px;font-weight:400;font-size:13px;color:#333;border-bottom:1px solid #e0e2e6}.cal-day-headers{display:grid;grid-template-columns:repeat(7,1fr);background:#f5f6f8;border-bottom:1px solid #e0e2e6}.cal-day-hdr{padding:4px;text-align:center;font-size:10px;font-weight:400;color:#5f6368}.cal-week-row{border-bottom:1px solid #eeeff2}.cal-week-row:last-child{border-bottom:none}.cal-week-days{display:grid;grid-template-columns:repeat(7,1fr)}.cal-day{min-height:40px;border-right:1px solid #eeeff2;padding:3px 3px 0}.cal-day.we{background:#f9f9fb}.cal-day.outside{background:#fafafa;min-height:10px}.cal-day-num{font-size:10px;color:#9aa0a6}.cal-bar-layer{display:grid;grid-template-columns:repeat(7,1fr);padding:1px 0}.cal-span-bar{height:15px;margin:1px 0;font-size:9px;color:#fff;line-height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cal-span-bar.bar-start{border-radius:3px 0 0 3px;padding-left:3px}.cal-span-bar.bar-end{border-radius:0 3px 3px 0}.cal-span-bar.bar-start.bar-end{border-radius:3px}.cal-span-label{pointer-events:none}.cal-icon-layer{display:grid;grid-template-columns:repeat(7,1fr)}.cal-icon-cell{display:flex;align-items:center;gap:2px;padding:1px 2px;font-size:9px}.cal-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}.cal-dot-label{color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-more{font-size:9px;color:#888}.dev-bar{height:28px;display:flex;align-items:center;justify-content:center;gap:12px;background:#1a1a2e;color:#8b8ba7;font-size:11px;font-family:monospace;flex-shrink:0;-webkit-app-region:drag}.dev-bar button{background:#ffffff1a;color:#ccc;border:1px solid rgba(255,255,255,.15);border-radius:3px;padding:2px 8px;font-size:10.5px;font-family:monospace;cursor:pointer;-webkit-app-region:no-drag}.dev-bar button:hover{background:#fff3;color:#fff}@keyframes toastSlideUp{0%{transform:translate(-50%) translateY(20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.cloud-account-line{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary);font-weight:500;text-transform:none;letter-spacing:0}.cloud-signin-modal{width:360px}.cloud-signin-hint{font-size:13px;color:var(--text-secondary);line-height:1.55;margin-bottom:14px}.cloud-signin-input{width:100%;padding:9px 10px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);font-size:13px;outline:none;box-sizing:border-box}.cloud-signin-input:focus{border-color:var(--accent-blue)}.cloud-signin-code{font-family:SF Mono,Consolas,monospace;font-size:20px;letter-spacing:8px;text-align:center}.cloud-signin-resend{background:none;border:none;color:var(--accent-blue);cursor:pointer;font-size:12px;padding:8px 0 0;text-align:left}.cloud-signin-resend:hover{text-decoration:underline}.cloud-signin-error{margin-top:10px;font-size:12px;color:#e74c3c}.cloud-gate-layer .hour-edit-overlay{z-index:26000}.cloud-upsell-modal{width:400px}.cloud-upsell-text{font-size:13px;color:var(--text-secondary);line-height:1.6;margin-bottom:16px}.share-online-modal{width:400px}.share-field-label{display:block;font-size:11.5px;color:var(--text-secondary);margin:10px 0 4px;font-weight:500}.share-url-row{display:flex;gap:6px;align-items:center;margin-top:8px}.share-url-row .cloud-signin-input{flex:1;font-size:12px}.btn-export-secondary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:8px 12px;margin-top:6px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:13px;cursor:pointer}.btn-export-secondary:hover{background:var(--bg-hover)}.cloud-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-light);border-radius:10px;padding:10px 18px;box-shadow:0 4px 20px #00000026;z-index:30000;font-size:13px;animation:toastSlideUp .25s ease-out}.cloud-logo-modal{width:380px}.cloud-logo-preview{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-secondary);margin-top:4px}.cloud-logo-preview img{max-height:48px;max-width:180px;display:block}.cloud-logo-name{font-size:12px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cloud-logo-empty{padding:16px 12px;border:1px dashed var(--border-color);border-radius:var(--radius-md);color:var(--text-muted);font-size:12.5px;text-align:center;margin-top:4px}.web-root{display:flex;flex-direction:column;height:100vh;width:100vw;background:var(--bg-secondary)}.web-root .app{height:auto;width:auto;flex:1;min-height:0}.web-dev-bar{gap:8px;padding:0 12px;justify-content:flex-start;flex-wrap:wrap;-webkit-app-region:no-drag}.web-dev-bar .dev-sep{opacity:.7}.web-dev-bar .dev-token-input{width:220px;background:#ffffff14;color:#ddd;border:1px solid rgba(255,255,255,.15);border-radius:3px;padding:2px 6px;font-size:10.5px;font-family:monospace}.web-dev-bar button.armed{background:#e74c3c59;color:#fff}.web-splash{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px}.web-splash-logo{height:28px;width:auto}.web-splash-text{font-size:13px;color:var(--text-secondary);text-align:center;max-width:420px;line-height:1.5}.web-splash-text.busy{color:var(--text-muted)}.web-splash-actions{display:flex;gap:8px}.web-signin-page{flex:1;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}.web-signin-page.overlay{position:fixed;inset:0;z-index:27000;background:#1a1d2373;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.web-signin-card{width:400px;max-width:100%;display:flex;flex-direction:column;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:0 20px 60px #0000004d;padding:32px;animation:dropdown-in .12s ease-out}.web-signin-page.overlay .web-signin-card{border:none}.web-signin-logo{height:28px;width:auto;align-self:flex-start;margin-bottom:14px}.web-beta-note{display:inline-flex;align-self:flex-start;align-items:center;gap:6px;font-size:11px;font-weight:500;letter-spacing:.3px;text-transform:uppercase;color:var(--accent-blue);background:#4a90d91a;border-radius:4px;padding:3px 8px;margin-bottom:18px}.web-signin-lead{font-size:13px;color:var(--text-secondary);line-height:1.55;margin-bottom:14px}.cloud-signin-inline h4{margin-bottom:4px;font-size:15px;font-weight:600}.cloud-signin-inline .hour-edit-actions{margin-top:14px}.web-signin-alt{margin-top:10px}.web-signin-footer{margin-top:22px;font-size:11.5px;color:var(--text-muted);line-height:1.5}.web-signin-footer a{color:var(--accent-blue);text-decoration:none}.web-signin-footer a:hover{text-decoration:underline}.web-banner{display:flex;align-items:center;gap:16px;padding:8px 16px;font-size:12.5px;line-height:1.45;flex-shrink:0;background:var(--bg-primary);border-bottom:1px solid var(--border-color)}.web-banner.warning{border-left:3px solid #C0792A}.web-banner.danger{border-left:3px solid #E74C3C}.web-banner.info{border-left:3px solid var(--accent-blue)}.web-banner-text{flex:1;color:var(--text-primary)}.web-banner.warning strong{color:#c0792a}.web-banner.danger strong{color:#e74c3c}.web-banner-actions{display:flex;gap:8px;flex-shrink:0}.web-banner-link{text-decoration:none;display:inline-block}.web-back{display:inline-flex;align-items:center;gap:4px;background:none;border:1px solid transparent;padding:5px 10px;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:12px;transition:all var(--transition)}.web-back:hover{background:var(--bg-secondary);color:var(--text-primary)}.web-save-state.busy{color:var(--text-muted)}.web-save-state.warn{color:#c0792a}.web-save-state.error{color:#e74c3c}.web-list-page{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.web-list-header{height:var(--topbar-height);display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--bg-primary);flex-shrink:0}.web-list-logo{height:22px;width:auto}.web-list-account{display:flex;align-items:center;gap:10px}.web-list-email{font-size:12px;color:var(--text-secondary);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.web-list-main{width:100%;max-width:860px;margin:0 auto;padding:28px 24px 48px}.web-list-title{font-size:20px;font-weight:600;color:var(--text-primary);margin:0}.web-list-card{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:0 2px 7px #0000001a;margin-top:16px}.web-list-empty{padding:40px 24px;text-align:center;color:var(--text-secondary);font-size:13px;line-height:1.6}.web-list-titlebar{display:flex;align-items:center;justify-content:space-between;gap:12px}.web-list-actions{display:flex;gap:8px}.web-list-refresh{display:inline-flex;align-items:center;gap:6px}.web-list-empty.muted{color:var(--text-muted)}.web-list-empty h3{font-size:15px;font-weight:600;color:var(--text-primary);margin:0 0 6px}.web-list-empty .btn-small{margin-top:14px}.web-list-table{display:flex;flex-direction:column}.web-list-head,.web-list-row{display:grid;grid-template-columns:minmax(0,1fr) 150px 176px;align-items:center;padding:8px 16px;column-gap:12px}.web-list-head{border-bottom:1px solid var(--border-color);font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.web-list-sort{background:none;border:none;padding:0;text-align:left;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;display:inline-flex;align-items:center;gap:4px}.web-list-sort:hover,.web-list-sort.active{color:var(--text-primary)}.web-list-sort.active{font-weight:500}.web-list-row{border-bottom:1px solid var(--border-light);transition:background var(--transition);min-height:44px}.web-list-row:last-child{border-bottom:none}.web-list-row:hover{background:var(--bg-secondary)}.web-list-cell.name{min-width:0;font-size:13px;color:var(--text-primary);display:flex}.web-list-cell.name .web-list-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.web-list-cell.name .inline-edit-input{font-size:13px;width:100%}.web-list-cell.time{font-size:12px;color:var(--text-secondary)}.web-list-cell.actions{display:flex;justify-content:flex-end;align-items:center;gap:4px}.web-list-row .icon-btn{opacity:.55}.web-list-row:hover .icon-btn,.web-list-row .icon-btn:focus-visible{opacity:1}.web-list-row .icon-btn:disabled{opacity:.3;cursor:not-allowed}
