@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";.gantt-wrapper{background:var(--color-surface, #ffffff);border-radius:var(--border-radius-lg, 12px);box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a;overflow:hidden}.gantt-container{width:100%;overflow-x:auto;padding:var(--spacing-md, 16px);background:#fff}.gantt-container .gantt{font-family:var(--font-family, "DM Sans", sans-serif)}.gantt-container .gantt .grid-header{fill:#fff}.gantt-container .gantt .upper-text,.gantt-container .gantt .lower-text{font-family:var(--font-mono, "JetBrains Mono", monospace);font-size:11px;font-weight:500}.gantt-container .gantt .upper-text{fill:var(--color-text, #1a1d21);font-weight:600}.gantt-container .gantt .lower-text{fill:var(--color-text-muted, #6b7280)}.gantt-container .gantt .grid-row{fill:transparent}.gantt-container .gantt .grid-row:nth-child(2n){fill:#00000005}.gantt-container .gantt .row-line{stroke:var(--color-border, #e5e7eb);stroke-width:1}.gantt-container .gantt .tick{stroke:var(--color-border, #e5e7eb);stroke-width:.5}.gantt-container .gantt .tick.thick{stroke:var(--color-primary, #2d3a4f);stroke-width:1;stroke-opacity:.3}.gantt-container .gantt .today-highlight{fill:var(--color-accent, #e85d75);opacity:.1}.gantt-container .gantt .bar{fill:var(--color-secondary, #4a6fa5);stroke:transparent;transition:fill .15s ease}.gantt-container .gantt .bar:hover,.gantt-container .gantt .bar-progress{fill:var(--color-primary, #2d3a4f)}.gantt-container .gantt .bar-label{font-family:var(--font-family, "DM Sans", sans-serif);font-size:12px;font-weight:500;fill:#fff}.gantt-container .gantt .handle{fill:var(--color-primary, #2d3a4f);cursor:ew-resize}.gantt-container .gantt .arrow{stroke:var(--color-accent, #e85d75);stroke-width:1.5;fill:none}.gantt-container .popup-wrapper{background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--border-radius, 8px);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;padding:0;font-family:var(--font-family, "DM Sans", sans-serif);min-width:200px;z-index:1000}.custom-gantt-popup{padding:12px 16px;display:flex;flex-direction:column;gap:4px}.custom-gantt-popup .popup-title{font-size:14px;font-weight:700;color:var(--color-primary, #2d3a4f);line-height:1.4}.custom-gantt-popup .popup-range{font-size:12px;color:var(--color-text-muted, #6b7280);font-family:var(--font-mono, "JetBrains Mono", monospace)}.custom-gantt-popup .popup-progress{margin-top:8px;padding-top:8px;border-top:1px solid var(--color-border, #e5e7eb);font-size:11px;font-weight:600;color:var(--color-secondary, #4a6fa5);text-transform:uppercase;letter-spacing:.05em}.gantt-container .popup-wrapper .pointer{border-top-color:var(--color-border, #e5e7eb)}.gantt-container .popup-wrapper .pointer:after{content:"";position:absolute;top:-1px;left:-7px;border:7px solid transparent;border-top-color:var(--color-surface, #ffffff)}.gantt-container .gantt .bar.meeting{fill:#6366f1}.gantt-container .gantt .bar.break{fill:#10b981}.gantt-container .gantt .bar.focus{fill:#f59e0b}.gantt-container .gantt .bar.review{fill:#8b5cf6}.gantt-container::-webkit-scrollbar{height:8px}.gantt-container::-webkit-scrollbar-track{background:var(--color-background, #f8f9fb);border-radius:4px}.gantt-container::-webkit-scrollbar-thumb{background:var(--color-border, #e5e7eb);border-radius:4px}.gantt-container::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted, #6b7280)}.gantt-wrapper.gantt-printing{box-shadow:none;border-radius:0;background:#fff}.gantt-wrapper.gantt-printing .gantt-container{overflow:visible;padding:0}.gantt-wrapper.gantt-printing .gantt-container .gantt{shape-rendering:geometricPrecision}@media print{.app-header,.task-list,.export-controls,.theme-toggle-btn{display:none!important}.app-main{padding:0!important}.gantt-wrapper{box-shadow:none!important;border:none!important}.gantt-container{overflow:visible!important}}.task-list-container{background:var(--color-surface);border-radius:var(--border-radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-xl);box-shadow:0 2px 8px #0000000f}.task-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.task-list-header h2{font-size:1.25rem;font-weight:600;color:var(--color-text);margin:0}.btn-add-task{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:linear-gradient(135deg,var(--color-secondary) 0%,var(--color-primary) 100%);color:#fff;border:none;border-radius:var(--border-radius);font-family:var(--font-family);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-add-task:hover{transform:translateY(-1px);box-shadow:0 4px 12px #4a6fa559}.btn-add-task i{font-size:.875rem}.btn-icon.edit i{color:#2196f3}.btn-icon.delete i{color:#9e9e9e}.btn-icon.delete:hover i{color:#f44336}.btn-icon.confirm-yes i{color:#4caf50}.btn-icon.confirm-no i{color:#9e9e9e}.empty-state{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);color:var(--color-text-muted)}.empty-icon{font-size:3rem;margin-bottom:var(--spacing-md);opacity:.6}.empty-title{font-size:1.125rem;font-weight:500;color:var(--color-text);margin-bottom:var(--spacing-xs)}.empty-subtitle{font-size:.875rem;color:var(--color-text-muted)}.task-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.task-row{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-md);background:var(--color-background);border-radius:var(--border-radius);border:1px solid var(--color-border);transition:all .2s ease;cursor:pointer}.task-row:hover{border-color:var(--color-secondary);box-shadow:0 2px 6px #0000000d}.task-row.selected{border-color:var(--color-secondary);background-color:#4a6fa50d;box-shadow:0 0 0 2px #4a6fa533}.task-info{flex:1;min-width:0}.task-name-row{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xs)}.task-name{font-weight:600;color:var(--color-text);font-size:1rem}.task-id{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);padding:2px 6px;background:var(--color-border);border-radius:4px}.task-times{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm);flex-wrap:wrap}.task-time{font-size:.875rem;color:var(--color-text-muted)}.time-label{font-weight:500;color:var(--color-text)}.time-arrow{color:var(--color-secondary);font-weight:600}.task-meta{display:flex;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap}.task-progress{display:flex;align-items:center;gap:var(--spacing-sm)}.progress-bar{width:80px;height:6px;background:var(--color-border);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-secondary) 0%,var(--color-accent) 100%);border-radius:3px;transition:width .3s ease}.progress-text{font-size:.75rem;font-weight:500;color:var(--color-text-muted);min-width:35px}.task-dependencies{font-size:.8rem;color:var(--color-text-muted)}.dep-label{font-weight:500}.task-actions{display:flex;align-items:center;gap:var(--spacing-xs);margin-left:var(--spacing-md)}.btn-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--color-border);border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;transition:all .15s ease}.btn-icon.edit:hover{background:#e3f2fd;border-color:#2196f3}.btn-icon.delete:hover{background:#ffebee;border-color:#f44336}.delete-confirm{display:flex;align-items:center;gap:var(--spacing-xs)}.delete-confirm-text{font-size:.75rem;color:#f44336;font-weight:500}.btn-icon.confirm-yes{color:#4caf50;border-color:#4caf50}.btn-icon.confirm-yes:hover{background:#e8f5e9}.btn-icon.confirm-no{color:#9e9e9e;border-color:#9e9e9e}.btn-icon.confirm-no:hover{background:#f5f5f5}.task-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.task-editor{background:var(--color-surface);border-radius:var(--border-radius-lg);width:100%;max-width:720px;box-shadow:0 20px 60px #00000040;animation:slideUp .25s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.task-editor-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.task-editor-header h2{font-size:1.25rem;font-weight:600;color:var(--color-text);margin:0}.close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;font-size:1.5rem;color:var(--color-text-muted);cursor:pointer;border-radius:var(--border-radius);transition:all .15s ease}.close-btn:hover{background:var(--color-background);color:var(--color-text)}.task-editor-body{padding:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-md)}.form-group>label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text);margin-bottom:var(--spacing-xs)}.form-group input[type=text],.form-group input[type=number],.form-group textarea{width:100%;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);font-family:var(--font-family);font-size:.9375rem;color:var(--color-text);background:var(--color-background);transition:all .15s ease}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--color-secondary);box-shadow:0 0 0 3px #4a6fa526}.form-group input.error,.form-group textarea.error{border-color:#f44336}.form-group textarea{resize:vertical;min-height:60px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}.form-row.time-row{gap:var(--spacing-xl)}@media (max-width: 600px){.form-row{grid-template-columns:1fr}}.required{color:var(--color-accent)}.error-text{display:block;color:#f44336;font-size:.75rem;margin-top:var(--spacing-xs)}.help-text{display:block;color:var(--color-text-muted);font-size:.75rem;margin-top:var(--spacing-xs)}.date-input-wrapper{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius)}.date-input{border:none;background:transparent;font-family:var(--font-family);font-size:.9375rem;color:var(--color-text);cursor:pointer;padding:0}.date-input:focus{outline:none}.date-input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6;transition:opacity .15s ease}.date-input::-webkit-calendar-picker-indicator:hover{opacity:1}.date-display{flex:1;font-size:.875rem;color:var(--color-text-muted);text-align:right}.progress-input-group{display:flex;align-items:center;gap:var(--spacing-md)}.progress-slider{flex:3;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-border);border-radius:3px;outline:none}.progress-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,var(--color-secondary) 0%,var(--color-primary) 100%);cursor:pointer;box-shadow:0 2px 6px #0003;transition:transform .15s ease}.progress-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.progress-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,var(--color-secondary) 0%,var(--color-primary) 100%);cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.progress-number{flex:1;min-width:70px;text-align:center;padding:var(--spacing-sm) var(--spacing-sm)}.time-picker-container{display:flex;flex-direction:column;gap:var(--spacing-sm)}.time-picker-main-label{font-size:.875rem;font-weight:500;color:var(--color-text)}.time-picker{display:flex;align-items:flex-end;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius)}.time-picker-group{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs)}.time-picker-label{font-size:.7rem;font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.time-select{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);font-family:var(--font-family);font-size:.9375rem;color:var(--color-text);background:var(--color-surface);cursor:pointer;min-width:60px;text-align:center}.time-select:focus{outline:none;border-color:var(--color-secondary);box-shadow:0 0 0 3px #4a6fa526}.period-select{min-width:55px}.time-separator{font-size:1.25rem;font-weight:600;color:var(--color-text);padding-bottom:var(--spacing-sm)}.dependency-multiselect{position:relative}.dependency-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);min-height:44px;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-background);cursor:pointer;transition:all .15s ease}.dependency-select-trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.dependency-select-trigger:hover{border-color:var(--color-secondary)}.dependency-select-trigger.open{border-color:var(--color-secondary);box-shadow:0 0 0 3px #4a6fa526;border-bottom-left-radius:0;border-bottom-right-radius:0}.dependency-select-trigger.error{border-color:#f44336}.selected-deps{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);flex:1}.placeholder{color:var(--color-text-muted);font-size:.9375rem}.dep-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:linear-gradient(135deg,var(--color-secondary) 0%,var(--color-primary) 100%);color:#fff;font-size:.8125rem;font-weight:500;border-radius:4px;animation:tagFadeIn .15s ease}@keyframes tagFadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dep-tag-remove{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;margin-left:2px;background:#fff3;border:none;border-radius:50%;color:#fff;font-size:.875rem;line-height:1;cursor:pointer;transition:background .15s ease}.dep-tag-remove:hover{background:#fff6}.dropdown-arrow{color:var(--color-text-muted);font-size:.625rem;transition:transform .15s ease}.dependency-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-secondary);border-top:none;border-radius:0 0 var(--border-radius) var(--border-radius);box-shadow:0 4px 12px #00000026;z-index:100;animation:dropdownSlide .15s ease}@keyframes dropdownSlide{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dependency-dropdown::-webkit-scrollbar{width:6px}.dependency-dropdown::-webkit-scrollbar-track{background:var(--color-background);border-radius:3px}.dependency-dropdown::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.dependency-dropdown::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.dependency-option{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background .1s ease}.dependency-option:hover{background:var(--color-background)}.dependency-option.focused{background:var(--color-background);outline:2px solid var(--color-accent);outline-offset:-2px}.dependency-option.selected{background:#4a6fa51a}.dependency-option.selected:hover{background:#4a6fa526}.dep-checkbox{width:18px;height:18px;display:flex;align-items:center;justify-content:center;border:2px solid var(--color-border);border-radius:4px;font-size:.75rem;font-weight:700;color:#fff;background:var(--color-background);transition:all .15s ease}.dependency-option.selected .dep-checkbox{background:linear-gradient(135deg,var(--color-secondary) 0%,var(--color-primary) 100%);border-color:var(--color-primary)}.dependency-name{flex:1;font-size:.875rem;color:var(--color-text)}.dependency-id{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);padding:2px 6px;background:var(--color-border);border-radius:4px}.dependency-selector.empty{padding:var(--spacing-md);text-align:center;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-background)}.no-tasks-message{color:var(--color-text-muted);font-size:.875rem;margin:0}.form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm);padding:var(--spacing-lg);border-top:1px solid var(--color-border)}.btn-primary,.btn-secondary{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--border-radius);font-family:var(--font-family);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-primary{background:linear-gradient(135deg,var(--color-secondary) 0%,var(--color-primary) 100%);color:#fff;border:none}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #4a6fa559}.btn-secondary{background:transparent;color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-background);border-color:var(--color-text-muted)}@media (max-width: 768px){.task-list-container{padding:var(--spacing-md)}.task-row{flex-direction:column;position:relative;padding-bottom:var(--spacing-xl)}.task-actions{position:absolute;bottom:var(--spacing-sm);right:var(--spacing-sm);margin-left:0}.task-meta{gap:var(--spacing-sm);flex-direction:column;align-items:flex-start}.task-times{flex-direction:column;align-items:flex-start;gap:2px}.time-arrow{display:none}.task-name-row{flex-wrap:wrap}}@media (max-width: 480px){.task-list-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.btn-add-task{width:100%;justify-content:center}.task-progress{width:100%}.progress-bar{flex:1}}.theme-selector{margin-bottom:2rem}.theme-label{display:block;margin-bottom:.75rem;font-weight:600;color:var(--color-text)}.theme-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:1rem}.theme-option-btn{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem;background:var(--color-background);border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .2s ease;color:var(--color-text)}.theme-option-btn:hover{border-color:var(--color-primary);transform:translateY(-2px)}.theme-option-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.theme-option-btn.active{border-color:var(--color-primary);background-color:#4f46e50d}.theme-preview{width:40px;height:40px;border-radius:50%;border:2px solid;display:flex;align-items:center;justify-content:center;overflow:hidden}.theme-preview-color{width:20px;height:20px;border-radius:50%}.theme-option-btn span{font-size:.875rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background-color:var(--color-background);color:var(--color-text);width:90%;max-width:600px;max-height:90vh;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;overflow:hidden;border:1px solid #e5e7eb}.modal-header{padding:1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.modal-header h2{font-size:1.25rem;font-weight:600;margin:0}.close-btn:hover{color:var(--color-text)}.close-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:4px}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-footer{padding:1rem 1.5rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end}.primary-btn{background-color:var(--color-primary);color:#fff;border:none;padding:.625rem 1.25rem;border-radius:6px;font-weight:500;cursor:pointer;transition:opacity .2s}.primary-btn:hover{opacity:.9}.primary-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (max-width: 480px){.theme-options{grid-template-columns:repeat(2,1fr)}.modal-content{width:95%}.modal-header,.modal-body,.modal-footer{padding:1rem}}.color-customizer{padding-top:1.5rem;border-top:1px solid #e5e7eb}.customizer-title{margin-bottom:1rem;font-size:1.125rem;font-weight:600;color:var(--color-text)}.color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem}.color-field{display:flex;flex-direction:column;gap:.5rem}.color-field label{font-size:.875rem;font-weight:500;color:var(--color-text)}.color-input-wrapper{display:flex;align-items:center;gap:.75rem}input[type=color]{-webkit-appearance:none;width:40px;height:40px;border:none;border-radius:4px;padding:0;cursor:pointer;background:none}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:1px solid #e5e7eb;border-radius:4px}.color-hex-input{flex:1;padding:.5rem;border:1px solid #e5e7eb;border-radius:4px;font-family:monospace;font-size:.875rem;background:var(--color-background);color:var(--color-text)}.color-hex-input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}input[type=color]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.export-controls{display:flex;align-items:center}.export-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-weight:500;font-size:.9rem;transition:all .2s;display:flex;align-items:center;gap:.5rem}.export-btn:hover:not(:disabled){background:#ffffff4d}.export-btn:disabled{background-color:#9ca3af;cursor:not-allowed}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:#fff;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 480px){.export-controls,.export-btn{width:100%}.export-btn{justify-content:center}}:root{--color-primary: #2d3a4f;--color-secondary: #4a6fa5;--color-accent: #e85d75;--color-background: #f8f9fb;--color-surface: #ffffff;--color-text: #1a1d21;--color-text-muted: #6b7280;--color-border: #e5e7eb;--font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--border-radius: 8px;--border-radius-lg: 12px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background-color:var(--color-background);color:var(--color-text);line-height:1.5;min-height:100vh}:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{padding:var(--spacing-lg) var(--spacing-xl);background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-secondary) 100%);color:#fff;display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md)}.header-content{text-align:left}.header-actions{display:flex;align-items:center;gap:var(--spacing-md)}.app-header h1{font-size:1.75rem;font-weight:600;letter-spacing:-.025em;margin-bottom:var(--spacing-xs)}.app-header .subtitle{font-size:.875rem;opacity:.85;font-weight:400}.theme-toggle-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:6px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:background .2s}.theme-toggle-btn:hover{background:#ffffff4d}.reset-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:6px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s}.reset-btn:hover{background:#ffffff4d}.app-main{flex:1;padding:var(--spacing-xl);overflow-x:auto}.app-footer{padding:var(--spacing-md) var(--spacing-xl);background:var(--color-surface);border-top:1px solid var(--color-border)}.footer-content{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);width:100%}.shortcuts-info{display:flex;gap:var(--spacing-xl);color:var(--color-text-muted);font-size:.75rem}.gift-note{font-size:.875rem;color:var(--color-text-muted);font-style:italic;opacity:.8}.shortcut-item{display:flex;align-items:center;gap:6px}kbd{background-color:var(--color-background);border:1px solid var(--color-border);border-radius:4px;box-shadow:0 1px #0003;color:var(--color-text);display:inline-block;font-family:var(--font-mono);font-size:.7rem;font-weight:600;line-height:1;padding:3px 6px;white-space:nowrap}.save-status-msg{background:#fff3;color:#fff;padding:4px 12px;border-radius:20px;font-size:.75rem;font-weight:500;animation:fadeInOut 2s ease-in-out}@keyframes fadeInOut{0%{opacity:0;transform:translateY(5px)}15%{opacity:1;transform:translateY(0)}85%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5px)}}@media (max-width: 900px){.app-header{flex-direction:column;align-items:flex-start;padding:var(--spacing-md)}.header-actions{width:100%;flex-wrap:wrap;gap:var(--spacing-sm)}.header-actions .export-controls{order:3;width:100%}.save-status-msg{order:0}.theme-toggle-btn,.reset-btn{flex:1;justify-content:center}}@media (max-width: 600px){.app-main{padding:var(--spacing-md)}.shortcuts-info{flex-wrap:wrap;gap:var(--spacing-md);justify-content:center}.shortcut-item{font-size:.7rem}.app-header h1{font-size:1.5rem}}@media (max-width: 480px){.app-header{padding:var(--spacing-md) var(--spacing-sm)}.header-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xs)}.header-actions .export-controls{grid-column:span 2}.save-status-msg{grid-column:span 2;text-align:center}.shortcuts-info{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-sm)}.shortcut-item{justify-content:flex-start}}body{background-color:var(--color-background);color:var(--color-text);transition:background-color .3s ease,color .3s ease}.gantt-container{background-color:#fff}.gantt .grid-header{fill:#fff;stroke:var(--color-border)}.gantt .grid-row{fill:var(--color-surface)}.gantt .grid-row:nth-child(2n){fill:#00000005}.gantt .bar{fill:var(--color-primary)}.gantt .bar-progress{fill:var(--color-secondary)}.gantt .bar-label{fill:#fff}.gantt .handle{fill:var(--color-secondary)}.gantt .arrow{stroke:var(--color-text);opacity:.5}.app-header{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-secondary) 100%)}button.primary-btn{background-color:var(--color-primary);color:#fff}button.secondary-btn{background-color:var(--color-secondary);color:#fff}.gantt .grid-background{fill:none}.gantt .grid-header{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}.gantt .grid-row{fill:#fff}.gantt .grid-row:nth-child(2n){fill:#f5f5f5}.gantt .row-line{stroke:#ebeff2}.gantt .tick{stroke:#e0e0e0;stroke-width:.2}.gantt .tick.thick{stroke-width:.4}.gantt .today-highlight{fill:#fcf8e3;opacity:.5}.gantt .arrow{fill:none;stroke:#666;stroke-width:1.4}.gantt .bar{fill:#b8c2cc;stroke:#8d99a6;stroke-width:0;transition:stroke-width .3s ease;-webkit-user-select:none;user-select:none}.gantt .bar-progress{fill:#a3a3ff}.gantt .bar-invalid{fill:transparent;stroke:#8d99a6;stroke-width:1;stroke-dasharray:5}.gantt .bar-invalid~.bar-label{fill:#555}.gantt .bar-label{fill:#fff;dominant-baseline:central;text-anchor:middle;font-size:12px;font-weight:lighter}.gantt .bar-label.big{fill:#555;text-anchor:start}.gantt .handle{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden;transition:opacity .3s ease}.gantt .bar-wrapper{cursor:pointer;outline:none}.gantt .bar-wrapper:hover .bar{fill:#a9b5c1}.gantt .bar-wrapper:hover .bar-progress{fill:#8a8aff}.gantt .bar-wrapper:hover .handle{visibility:visible;opacity:1}.gantt .bar-wrapper.active .bar{fill:#a9b5c1}.gantt .bar-wrapper.active .bar-progress{fill:#8a8aff}.gantt .lower-text,.gantt .upper-text{font-size:12px;text-anchor:middle}.gantt .upper-text{fill:#555}.gantt .lower-text{fill:#333}.gantt .hide{display:none}.gantt-container{position:relative;overflow:auto;font-size:12px}.gantt-container .popup-wrapper{position:absolute;top:0;left:0;background:#000c;padding:0;color:#959da5;border-radius:3px}.gantt-container .popup-wrapper .title{border-bottom:3px solid #a3a3ff;padding:10px}.gantt-container .popup-wrapper .subtitle{padding:10px;color:#dfe2e5}.gantt-container .popup-wrapper .pointer{position:absolute;height:5px;margin:0 0 0 -5px;border:5px solid transparent;border-top-color:#000c}
