:root{--color-primary: #6366f1;--color-primary-light: color-mix(in srgb, var(--color-primary) 15%, white);--color-primary-dark: color-mix(in srgb, var(--color-primary) 85%, black);--color-background: #fafafa;--color-surface: #ffffff;--color-surface-hover: #f5f5f5;--color-text: #1f2937;--color-text-muted: #6b7280;--color-text-light: #9ca3af;--color-border: #e5e7eb;--color-border-light: #f3f4f6;--color-future: #94a3b8;--color-future-bg: #f8fafc;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--font-sans: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);background-color:var(--color-background);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;color:var(--color-text)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.125rem}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-dark)}button{font-family:inherit;cursor:pointer;border:none;background:none;font-size:inherit}input,textarea,select{font-family:inherit;font-size:inherit;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.75rem 1rem;background:var(--color-surface);color:var(--color-text);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);width:100%}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}input::placeholder,textarea::placeholder{color:var(--color-text-light)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-border-light);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb{background:var(--color-text-light);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sidebar{width:320px;background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;overflow-y:auto}.sidebar-header{padding:1.5rem;border-bottom:1px solid var(--color-border)}.sidebar-header h1{font-size:1.25rem;display:flex;align-items:center;gap:.5rem}.sidebar-content{flex:1;padding:1rem;overflow-y:auto}.sidebar-section{margin-bottom:1.5rem}.sidebar-section-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.75rem;padding:0 .5rem}.main-content{flex:1;margin-left:320px;display:flex;flex-direction:column}.timeline-header{padding:1rem 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:50}.timeline-container{flex:1;overflow:auto;padding:2rem}@media(max-width:768px){.timeline-container{padding:2rem 0}}.loading{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--color-text-muted)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-fade-in{animation:fadeIn var(--transition-normal) ease-out}.animate-slide-up{animation:slideUp var(--transition-normal) ease-out}.animate-scale-in{animation:scaleIn var(--transition-normal) ease-out}.category-selector{display:flex;flex-direction:column;gap:.75rem}.category-actions{display:flex;gap:.5rem}.category-action-btn{flex:1;padding:.5rem .75rem;font-size:.813rem;font-weight:500;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast)}.category-action-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.category-action-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.category-list{display:flex;flex-direction:column;gap:.25rem}.category-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:var(--radius-md);transition:all var(--transition-fast);border:1px solid transparent}.category-item:hover{background:var(--color-surface-hover)}.category-item.selected{background:color-mix(in srgb,var(--category-color) 10%,transparent);border-color:color-mix(in srgb,var(--category-color) 30%,transparent)}.category-main{display:flex;align-items:center;gap:.75rem;flex:1;cursor:pointer}.category-checkbox{display:none}.category-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--category-color) 15%,transparent);color:var(--category-color);transition:all var(--transition-fast)}.category-item.selected .category-icon{background:var(--category-color);color:#fff}.category-name{flex:1;font-size:.875rem;font-weight:500;color:var(--color-text)}.category-color-dot{width:8px;height:8px;border-radius:50%;opacity:.6}.category-item.selected .category-color-dot{opacity:1}.category-actions-inline{display:flex;gap:.25rem;opacity:0;transition:opacity var(--transition-fast)}.category-item:hover .category-actions-inline{opacity:1}.category-edit-btn,.category-delete-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);color:var(--color-text-muted);transition:all var(--transition-fast)}.category-edit-btn:hover{background:var(--color-primary-light);color:var(--color-primary)}.category-delete-btn:hover{background:#fef2f2;color:#ef4444}.add-category-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-size:.8125rem;font-weight:500;color:var(--color-primary);background:var(--color-primary-light);border:1px dashed var(--color-primary);border-radius:var(--radius-md);transition:all var(--transition-fast);margin-top:.5rem}.add-category-btn:hover{background:var(--color-primary);color:#fff;border-style:solid}.category-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn var(--transition-fast) ease-out}.category-modal{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.5rem;width:90%;max-width:360px;box-shadow:var(--shadow-xl);animation:scaleIn var(--transition-normal) ease-out}.category-modal h3{font-size:1.125rem;margin-bottom:1rem}.category-modal .form-group{margin-bottom:1rem}.category-modal .form-group label{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.5rem}.category-modal input[type=text]{padding:.625rem .75rem;font-size:.875rem}.color-picker-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem}.color-option{width:100%;aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid transparent;transition:all var(--transition-fast)}.color-option.active{border-color:var(--color-text);box-shadow:0 0 0 2px #fff inset}.category-modal .icon-select-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;color:var(--color-text);width:100%;transition:all var(--transition-fast)}.category-modal .icon-select-btn:hover{border-color:var(--color-primary)}.icon-picker-small{display:grid;grid-template-columns:repeat(6,1fr);gap:.25rem;margin-top:.5rem;padding:.5rem;background:var(--color-background);border-radius:var(--radius-md);max-height:140px;overflow-y:auto}.icon-picker-small .icon-option{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);color:var(--color-text-muted);transition:all var(--transition-fast)}.icon-picker-small .icon-option:hover{background:var(--color-surface-hover);color:var(--color-text)}.icon-picker-small .icon-option.active{background:var(--color-primary);color:#fff}.modal-buttons{display:flex;gap:.75rem;margin-top:1.5rem}.category-modal .btn-secondary{flex:1;padding:.75rem 1rem;font-size:.875rem;font-weight:500;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast)}.category-modal .btn-secondary:hover{background:var(--color-surface-hover);color:var(--color-text)}.category-modal .btn-primary{flex:1;padding:.75rem 1rem;font-size:.875rem;font-weight:500;color:#fff;background:var(--color-primary);border:none;border-radius:var(--radius-md);transition:all var(--transition-fast)}.category-modal .btn-primary:hover{background:var(--color-primary-dark)}@media(max-width:768px){.category-actions-inline{opacity:1}}.settings-panel{margin-top:auto;padding-top:1rem;border-top:1px solid var(--color-border)}.settings-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:.75rem;font-size:.875rem;font-weight:500;color:var(--color-text-muted);border-radius:var(--radius-md);transition:all var(--transition-fast)}.settings-toggle:hover{background:var(--color-surface-hover);color:var(--color-text)}.settings-content{margin-top:1rem;display:flex;flex-direction:column;gap:1.25rem}.settings-group{display:flex;flex-direction:column;gap:.5rem}.settings-label{display:flex;align-items:center;gap:.5rem;font-size:.813rem;font-weight:600;color:var(--color-text)}.settings-input{padding:.625rem .75rem;font-size:.875rem}.settings-hint{font-size:.75rem;color:var(--color-text-muted)}.color-picker{display:flex;flex-wrap:wrap;gap:.5rem}.color-option{width:28px;height:28px;border-radius:var(--radius-sm);border:2px solid transparent;transition:all var(--transition-fast);cursor:pointer}.color-option:hover{transform:scale(1.1)}.color-option.active{border-color:var(--color-text);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--color-text)}.custom-color{display:flex;align-items:center;gap:.75rem;margin-top:.5rem}.color-input{width:40px;height:32px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer}.color-input::-webkit-color-swatch-wrapper{padding:0}.color-input::-webkit-color-swatch{border:none;border-radius:4px}.color-value{font-size:.813rem;font-family:monospace;color:var(--color-text-muted)}.view-toggle{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--color-text);background:transparent;border:none;border-radius:var(--radius-full);transition:all var(--transition-fast)}.view-toggle:hover{background:var(--color-surface-hover);color:var(--color-primary)}.milestone-card{position:relative;display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:left;cursor:pointer;transition:all var(--transition-normal);box-shadow:var(--shadow-sm)}.milestone-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--milestone-color)}.milestone-card.future{background:var(--color-future-bg);border-style:dashed;border-color:var(--color-future)}.milestone-card.future:hover{border-color:var(--milestone-color);border-style:solid}.milestone-card.horizontal{flex-direction:column;align-items:center;min-width:140px;max-width:180px;text-align:center}.milestone-card.horizontal .milestone-connector{position:absolute;top:0;left:50%;width:2px;height:24px;background:var(--milestone-color);transform:translate(-50%) translateY(-100%)}.milestone-card.horizontal .milestone-content{align-items:center}.milestone-card.vertical{flex-direction:row;min-width:280px;max-width:360px}.milestone-card.vertical .milestone-connector{position:absolute;left:0;top:50%;width:24px;height:2px;background:var(--milestone-color);transform:translate(-100%) translateY(-50%)}.milestone-dot{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--milestone-color) 15%,white);color:var(--milestone-color);flex-shrink:0;overflow:hidden;transition:all var(--transition-fast)}.milestone-card:hover .milestone-dot{background:var(--milestone-color);color:#fff;transform:scale(1.1)}.milestone-image{width:100%;height:100%;object-fit:cover}.milestone-content{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0}.milestone-date{font-size:.75rem;font-weight:500;color:var(--color-text-muted)}.milestone-title{font-size:.938rem;font-weight:600;color:var(--color-text);margin:0;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.milestone-category{font-size:.75rem;font-weight:500}.milestone-future-badge{position:absolute;top:.5rem;right:.5rem;padding:.125rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background:var(--color-future);color:#fff;border-radius:var(--radius-full)}.milestone-card.future .milestone-dot{opacity:.7}.milestone-card.future .milestone-title{color:var(--color-text-muted)}@keyframes milestoneAppear{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.milestone-card{animation:milestoneAppear .3s ease-out backwards}.milestone-card.compact{padding:0;background:transparent;border:none;box-shadow:none;min-width:auto;max-width:none}.milestone-card.compact .milestone-connector{display:none}.milestone-card.compact .milestone-dot{width:24px;height:24px;border:2px solid var(--milestone-color);background:var(--color-surface)}.milestone-card.compact:hover .milestone-dot{transform:scale(1.2)}.milestone-compact-title{font-size:.625rem;font-weight:500;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}.milestone-card.compact.horizontal{flex-direction:column;align-items:center;gap:.25rem}.milestone-card.compact.vertical{flex-direction:row;align-items:center;gap:.5rem}@media(max-width:768px){.milestone-card.horizontal{min-width:120px;max-width:140px;padding:.75rem}.milestone-card.vertical{min-width:200px;max-width:280px}.milestone-dot{width:32px;height:32px}.milestone-title{font-size:.875rem}.milestone-date{font-size:.6875rem}}.modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:520px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-header h2{font-size:1.125rem;font-weight:600}.modal-actions{display:flex;align-items:center;gap:.25rem}.modal-action-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);color:var(--color-text-muted);transition:all var(--transition-fast)}.modal-action-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.modal-action-btn.danger:hover{background:#fef2f2;color:#ef4444}.modal-close{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);color:var(--color-text-muted);transition:all var(--transition-fast)}.modal-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.modal-form{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.375rem}.form-label{display:flex;align-items:center;gap:.375rem;font-size:.813rem;font-weight:600;color:var(--color-text)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}textarea{resize:vertical;min-height:80px}select{cursor:pointer}.form-checkbox{display:flex;align-items:center;gap:.5rem;font-size:.875rem;cursor:pointer}.form-checkbox input{width:18px;height:18px;accent-color:var(--color-primary)}.icon-select-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;color:var(--color-text);transition:all var(--transition-fast)}.icon-select-btn:hover{border-color:var(--color-primary)}.icon-picker{position:absolute;z-index:10;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:.75rem;display:grid;grid-template-columns:repeat(8,1fr);gap:.25rem;max-height:200px;overflow-y:auto;margin-top:.5rem}.icon-option{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);color:var(--color-text-muted);transition:all var(--transition-fast)}.icon-option.active{background:var(--color-primary);color:#fff}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding-top:1rem;margin-top:.5rem;border-top:1px solid var(--color-border)}.btn-primary,.btn-secondary{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;border-radius:var(--radius-md);transition:all var(--transition-fast)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-surface-hover)}.modal-view{padding:2rem;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.75rem}.view-icon{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--color-primary-light);color:var(--color-primary);overflow:hidden;margin-bottom:.5rem}.view-icon img{width:100%;height:100%;object-fit:cover}.view-title{font-size:1.5rem;font-weight:600;margin:0}.view-date{font-size:.938rem;color:var(--color-text-muted)}.view-category{display:inline-block;padding:.25rem .75rem;font-size:.75rem;font-weight:500;color:#fff;border-radius:var(--radius-full)}.view-future{display:inline-block;padding:.25rem .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background:var(--color-future);color:#fff;border-radius:var(--radius-full)}.view-description{margin-top:1rem;font-size:.938rem;line-height:1.6;color:var(--color-text-muted);max-width:400px}.timeline-scroll-container{overflow:auto;position:relative;height:100%;width:100%;touch-action:pan-x pan-y}.timeline-scroll-container.horizontal{overflow-x:auto;overflow-y:hidden;padding:0 8rem}.timeline-scroll-container.vertical{overflow-x:hidden;overflow-y:auto;padding:3rem 0}.timeline{position:relative;min-height:400px;padding:3rem}.month-marker{position:absolute;z-index:4}.month-label{font-size:.6875rem;font-weight:500;color:var(--color-text-light);text-transform:lowercase;background:transparent;padding:.125rem .25rem}.timeline.horizontal .month-marker{top:50%;transform:translate(-50%)}.timeline.horizontal .month-marker .month-label{position:absolute;left:50%;transform:translate(-50%);top:-45px;white-space:nowrap}.timeline.vertical .month-marker{left:50%;transform:translate(-50%) translateY(-50%)}.timeline.vertical .month-marker .month-label{position:absolute;left:calc(100% + 20px);top:50%;transform:translateY(-50%);white-space:nowrap}.timeline-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;color:var(--color-text-muted);text-align:center;padding:2rem}.timeline-empty-hint{font-size:.875rem;color:var(--color-text-light);margin-top:.5rem}.timeline.horizontal{min-width:100%;width:max-content;height:calc(100vh - 200px);min-height:500px;padding:4rem 15rem;display:flex;align-items:center}.timeline.horizontal .timeline-axis{position:absolute;left:3rem;right:3rem;top:50%;height:3px;background:linear-gradient(to right,transparent,var(--color-border) 2%,var(--color-border) 98%,transparent);transform:translateY(-50%)}.timeline.horizontal .year-marker{position:absolute;top:50%;transform:translate(-50%)}.timeline.horizontal .year-marker .year-label{position:absolute;left:50%;transform:translate(-50%);bottom:-35px;white-space:nowrap}.timeline.horizontal .year-marker:before{content:"";position:absolute;left:50%;top:0;width:2px;height:12px;background:var(--color-text-light);transform:translate(-50%)}.timeline.horizontal .milestone-wrapper{position:absolute;top:50%;transform:translate(-50%) translateY(calc(-100% - 30px))}.timeline.horizontal .milestone-wrapper.alternate{transform:translate(-50%) translateY(30px)}.timeline.horizontal .milestone-wrapper .milestone-card.horizontal .milestone-connector{top:unset;bottom:0;transform:translate(-50%) translateY(100%)}.timeline.horizontal .milestone-wrapper.alternate .milestone-card.horizontal .milestone-connector{bottom:unset;top:0;transform:translate(-50%) translateY(-100%)}.timeline.vertical{min-height:100%;height:max-content;width:100%;padding:3rem 2rem 3rem calc(50% + 1rem)}.timeline.vertical .timeline-axis{position:absolute;left:50%;top:2rem;bottom:2rem;width:3px;background:linear-gradient(to bottom,transparent,var(--color-border) 2%,var(--color-border) 98%,transparent);transform:translate(-50%)}.timeline.vertical .year-marker{position:absolute;left:50%;transform:translate(-50%) translateY(-50%)}.timeline.vertical .year-marker .year-label{position:absolute;right:calc(100% + 20px);top:50%;transform:translateY(-50%);white-space:nowrap}.timeline.vertical .year-marker:before{content:"";position:absolute;top:50%;left:0;width:12px;height:2px;background:var(--color-text-light);transform:translateY(-50%) translate(-6px)}.timeline.vertical .milestone-wrapper{position:absolute;left:calc(50% + 60px);transform:translateY(-50%)}.timeline.vertical .milestone-wrapper.alternate{left:unset;right:calc(50% + 80px)}.timeline.vertical .milestone-wrapper.alternate .milestone-card.vertical{flex-direction:row-reverse;text-align:right}.timeline.vertical .milestone-wrapper.alternate .milestone-card.vertical .milestone-connector{left:unset;right:0;transform:translate(100%) translateY(-50%)}.timeline.vertical .milestone-wrapper.alternate .milestone-card.vertical .milestone-content{align-items:flex-end}.year-marker{z-index:5}.year-label{font-size:.813rem;font-weight:600;color:var(--color-text-muted);background:var(--color-background);padding:.25rem .5rem;border-radius:var(--radius-sm)}.milestone-wrapper{animation:fadeSlideIn .4s ease-out backwards;z-index:10;transition:z-index 0s}.milestone-wrapper:hover{z-index:100}@keyframes fadeSlideIn{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% - 30px)) scale(.9)}to{opacity:1;transform:translate(-50%) translateY(calc(-100% - 30px)) scale(1)}}.timeline.horizontal .milestone-wrapper.alternate{animation-name:fadeSlideInAlternate}@keyframes fadeSlideInAlternate{0%{opacity:0;transform:translate(-50%) translateY(30px) scale(.9)}to{opacity:1;transform:translate(-50%) translateY(30px) scale(1)}}.timeline.vertical .milestone-wrapper{animation-name:fadeSlideInVertical}@keyframes fadeSlideInVertical{0%{opacity:0;transform:translateY(-50%) translate(20px)}to{opacity:1;transform:translateY(-50%) translate(0)}}.timeline.vertical .milestone-wrapper.alternate{animation-name:fadeSlideInVerticalAlternate}@keyframes fadeSlideInVerticalAlternate{0%{opacity:0;transform:translateY(-50%) translate(-20px)}to{opacity:1;transform:translateY(-50%) translate(0)}}@media(max-width:768px){.timeline-scroll-container.horizontal{padding:0}.timeline-scroll-container.vertical{padding:2rem 0}.timeline.horizontal{padding:0;min-height:300px}.timeline.vertical{padding:0 0 0 calc(50% + .25rem)}.year-label{font-size:.7rem;padding:.125rem .25rem}.month-label{font-size:.6rem}.timeline.horizontal .month-marker .month-label{top:-25px}.timeline-scroll-container.horizontal{display:flex;align-items:center;justify-content:flex-start}.timeline.horizontal .milestone-wrapper{transform:translate(-50%) translateY(calc(-100% - 20px))}.timeline.horizontal .milestone-wrapper.alternate{transform:translate(-50%) translateY(20px)}.timeline.vertical .milestone-wrapper{left:calc(50% + 40px)}.timeline.vertical .milestone-wrapper.alternate{right:calc(50% + 50px)}}@media(max-width:480px){.timeline-scroll-container.horizontal{padding:0}.timeline-scroll-container.vertical{padding:1.5rem 0}.timeline.horizontal{padding:0;min-height:250px}.timeline.vertical{padding:0 0 0 calc(50% + .125rem)}.year-label{font-size:.625rem}.timeline.horizontal .month-marker .month-label{top:-20px}.timeline-scroll-container.horizontal{display:flex;align-items:center}}.add-milestone-btn{position:fixed;bottom:2rem;right:2rem;width:56px;height:56px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg),0 0 0 0 var(--color-primary);transition:all var(--transition-normal);z-index:100}.add-milestone-btn:hover{transform:scale(1.1);box-shadow:var(--shadow-xl),0 0 0 8px color-mix(in srgb,var(--color-primary) 20%,transparent)}.add-milestone-btn:active{transform:scale(.95)}@keyframes pulse{0%,to{box-shadow:var(--shadow-lg),0 0 0 0 var(--color-primary)}50%{box-shadow:var(--shadow-lg),0 0 0 12px transparent}}.add-milestone-btn:hover{animation:pulse 1.5s ease-in-out infinite}.milestone-form{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.form-row{display:flex;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem;flex:1}.form-group label{font-size:.875rem;font-weight:500;color:var(--color-text)}.form-group input,.form-group select,.form-group textarea{padding:.75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);color:var(--color-text);font-size:.938rem;outline:none;transition:border-color var(--transition-fast)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #6366f11a}.form-group textarea{resize:vertical;min-height:80px}.icon-selector{position:relative}.selected-icon-btn{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);color:var(--color-text);cursor:pointer;text-align:left}.icon-picker{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:20;display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:.5rem;padding:.5rem;margin-top:.25rem}.icon-option{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--color-background);color:var(--color-text-muted);cursor:pointer}.icon-option:hover{background:var(--color-surface-hover);color:var(--color-text)}.icon-option.selected{background:var(--color-primary);color:#fff}.form-actions{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.delete-btn{padding:.5rem 1rem;background:transparent;color:#ef4444;border:1px solid #ef4444;border-radius:var(--radius-md);cursor:pointer;font-weight:500;transition:all var(--transition-fast)}.delete-btn:hover{background:#ef4444;color:#fff}.right-actions{display:flex;gap:.75rem}.cancel-btn{padding:.5rem 1rem;background:transparent;color:var(--color-text-muted);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;font-weight:500}.cancel-btn:hover{color:var(--color-text);background:var(--color-surface-hover)}.submit-btn{padding:.5rem 1.5rem;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-weight:500}.submit-btn:hover{background:var(--color-primary-hover)}.submit-btn:disabled{opacity:.7;cursor:not-allowed}@media(max-width:640px){.form-row{flex-direction:column;gap:.5rem}}.milestone-table-view{padding:1.5rem;background:var(--color-surface);height:100%;display:flex;flex-direction:column;overflow:hidden}.table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.table-header h2{font-size:1.25rem;font-weight:600;margin:0}.add-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.add-btn:hover{background:var(--color-primary-hover);transform:translateY(-1px)}.table-filters{display:flex;gap:1rem;margin-bottom:1rem}.search-box{flex:2;min-width:300px;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md)}.search-box input{flex:1;border:none;background:none;outline:none;font-size:.875rem;color:var(--color-text)}.search-box svg{color:var(--color-text-muted)}.clear-search{padding:.25rem;color:var(--color-text-muted);cursor:pointer}.clear-search:hover{color:var(--color-text)}.category-filter{padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);font-size:.875rem;color:var(--color-text);cursor:pointer}.table-container{flex:1;overflow:auto;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-lg)}table{width:100%;border-collapse:collapse}thead{position:sticky;top:0;background:var(--color-surface);z-index:10}th{text-align:left;padding:.75rem 1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--color-text)}th svg{margin-left:.25rem;opacity:.3;vertical-align:middle}th svg.active{opacity:1;color:var(--color-primary)}td{padding:.75rem 1rem;font-size:.875rem;border-bottom:1px solid var(--color-border)}tbody tr:hover{background:var(--color-surface-hover)}.clickable-row{cursor:pointer;transition:background-color var(--transition-fast)}.date-cell{white-space:nowrap;color:var(--color-text-muted);font-weight:500}.title-cell{display:flex;flex-direction:column;gap:.125rem}.milestone-title{font-weight:500}.milestone-desc{font-size:.75rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.category-badge{display:inline-block;padding:.25rem .5rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:500}.status-badge{display:inline-block;padding:.125rem .5rem;border-radius:var(--radius-full);font-size:.6875rem;font-weight:600;text-transform:uppercase}.status-badge.future{background:var(--color-future);color:#fff}.status-badge.past{background:var(--color-success);color:#fff}.actions-cell{display:flex;gap:.5rem}.action-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);border:none;cursor:pointer;transition:all var(--transition-fast)}.action-btn.edit{background:var(--color-surface);color:var(--color-text-muted)}.action-btn.edit:hover{background:var(--color-primary);color:#fff}.action-btn.delete{background:var(--color-surface);color:var(--color-text-muted)}.action-btn.delete:hover{background:#ef4444;color:#fff}.empty-state{padding:3rem;text-align:center;color:var(--color-text-muted)}.table-footer{padding:.75rem 0;font-size:.75rem;color:var(--color-text-muted);text-align:right}.table-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.table-modal{background:var(--color-surface);border-radius:var(--radius-xl);width:100%;max-width:500px;max-height:90vh;overflow:auto;box-shadow:var(--shadow-xl)}.table-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.table-modal-header h3{margin:0;font-size:1.125rem;font-weight:600}.close-btn{padding:.5rem;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-md)}.close-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}@media(max-width:768px){.milestone-table-view{padding:.75rem}.table-filters{flex-direction:column;gap:.5rem}.search-box{min-width:100%;flex:1;padding:.35rem .5rem}.table-header{flex-direction:column;align-items:stretch;gap:.5rem;margin-bottom:.75rem}.table-header h2{font-size:1rem}.add-btn{justify-content:center;padding:.4rem .75rem;font-size:.8rem}th,td{padding:.4rem .5rem;font-size:.75rem}th{font-size:.6rem}.date-cell{font-size:.65rem}.title-cell .milestone-title{font-size:.7rem}.milestone-desc{display:none}th:nth-child(4),td:nth-child(4){display:none}.category-badge{font-size:.65rem;padding:.15rem .4rem}.table-footer{padding:.5rem 0;font-size:.7rem}.empty-state{padding:2rem;font-size:.8rem}}.donation-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem;animation:fadeIn var(--transition-fast) ease-out}.donation-modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:600px;max-height:90vh;overflow-y:auto;position:relative;box-shadow:var(--shadow-xl);animation:scaleIn var(--transition-fast) ease-out}.donation-modal-close{position:absolute;top:1rem;right:1rem;padding:.5rem;border-radius:var(--radius-full);color:var(--color-text-muted);transition:all var(--transition-fast);z-index:10}.donation-modal-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.donation-modal-content{padding:2rem;display:flex;flex-direction:column;align-items:center}.donation-icon{width:64px;height:64px;background:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;margin-bottom:1rem;color:var(--color-primary);box-shadow:var(--shadow-sm)}.donation-alert{width:100%;padding:1rem;border-radius:var(--radius-md);margin-bottom:1.5rem;position:relative;font-size:.9em;display:flex;align-items:flex-start;gap:.5rem}.donation-alert .alert-close{position:absolute;top:.5rem;right:.5rem;background:none;border:none;font-size:1.25rem;cursor:pointer;opacity:.6}.donation-alert.success{background-color:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.donation-alert.info{background-color:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.donation-intro{text-align:center;color:var(--color-text-muted);margin-bottom:2rem;line-height:1.6}.donation-intro a{color:var(--color-primary);text-decoration:underline}.donation-form{width:100%;max-width:400px;display:flex;flex-direction:column;gap:1.25rem}.form-title{display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:1.3rem;margin-bottom:.5rem}.form-icon{width:32px;height:32px}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.9em;color:var(--color-text-muted)}.form-group textarea,.form-group select,.form-group input[type=text]{width:100%;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:1rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-group textarea:focus,.form-group select:focus,.form-group input[type=text]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.char-count{font-size:.75rem;color:var(--color-text-muted);text-align:right}.amount-input-wrapper{position:relative;display:flex;align-items:center}.currency-symbol{position:absolute;left:.75rem;color:var(--color-text);font-weight:500}.amount-input-wrapper input{padding-left:2rem!important}.amount-input-wrapper input.error{border-color:#ef4444}.error-message{color:#ef4444;font-size:.8em}.total-amount{font-size:.8em;color:var(--color-text-muted)}.checkbox-group label{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-group input{margin-top:.25rem}.donate-button{background:var(--color-primary);color:#fff;border:none;padding:.875rem;border-radius:var(--radius-md);font-size:1rem;font-weight:600;cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast);margin-top:.5rem}.donate-button:hover:not(:disabled){background-color:var(--color-primary-dark);transform:translateY(-1px)}.donate-button:disabled{opacity:.7;cursor:not-allowed}.payment-methods{text-align:center;font-size:.75rem;color:var(--color-text-muted);margin-top:.5rem}.recurring-info{text-align:center;font-size:.875rem;color:var(--color-text-muted);margin-top:1.5rem;max-width:400px}.donation-modal::-webkit-scrollbar{width:8px}.donation-modal::-webkit-scrollbar-track{background:transparent}.donation-modal::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:4px}.app{display:flex;min-height:100vh}.timeline-header{display:flex;justify-content:space-between;align-items:center}.header-left{display:flex;align-items:center;gap:.75rem}.app-title{display:flex;align-items:center;gap:.5rem;font-size:1.125rem;font-weight:600;margin:0;color:var(--color-text)}.header-controls{display:flex;align-items:center;gap:.75rem}.hamburger-btn{display:flex;padding:.5rem;border-radius:var(--radius-md);color:var(--color-text);transition:all var(--transition-fast)}.hamburger-btn:hover{background:var(--color-surface-hover)}.sidebar-title{font-size:.875rem;font-weight:500;color:var(--color-text-muted)}.sidebar-close{display:flex;padding:.5rem;border-radius:var(--radius-md);color:var(--color-text-muted);transition:all var(--transition-fast)}.sidebar-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebar-overlay{position:fixed;inset:0;background:#00000080;z-index:99;animation:fadeIn var(--transition-fast) ease-out}.sidebar{position:fixed;top:0;left:0;bottom:0;width:320px;max-width:85vw;transform:translate(-100%);transition:transform var(--transition-normal);z-index:100;box-shadow:var(--shadow-xl)}.sidebar.open{transform:translate(0)}.sidebar-footer{padding:1rem 1.5rem;border-top:1px solid var(--color-border);text-align:center}.credit-text{font-size:.75rem;color:var(--color-text-muted)}.credit-link{text-decoration:none}.credit-link:hover{text-decoration:underline}.credit-reinonlein{color:#10a21d;font-weight:700}.credit-studio{color:var(--color-text);font-weight:700}.sidebar-header{display:flex;justify-content:space-between;align-items:center}.main-content{flex:1;margin-left:0;width:100%;display:flex;flex-direction:column;min-height:100vh}.timeline-container{flex:1;position:relative;overflow:auto;scroll-behavior:smooth;min-height:0}.zoom-controls{display:flex;align-items:center;gap:.5rem;padding:.25rem;background:transparent;border:none;border-radius:var(--radius-md)}.zoom-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);color:var(--color-text);transition:all var(--transition-fast)}.zoom-btn:hover:not(:disabled){background:var(--color-primary);color:#fff}.zoom-btn:disabled{opacity:.3;cursor:not-allowed}.compact-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);color:var(--color-text-muted);background:transparent;border:none;transition:all var(--transition-fast)}.compact-toggle:hover{color:var(--color-text);background:var(--color-surface-hover)}.compact-toggle.active{background:var(--color-primary);color:#fff}.view-mode-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);color:var(--color-text-muted);background:transparent;border:none;transition:all var(--transition-fast)}.view-mode-toggle:hover{color:var(--color-text);background:var(--color-surface-hover)}.view-mode-toggle.active{background:var(--color-primary);color:#fff}.donate-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast)}.donate-btn:hover{transform:scale(1.15);opacity:.8}@media(max-width:768px){.timeline-header{padding:.75rem 1rem}.header-controls{gap:.5rem}.app-title{font-size:1rem}.add-milestone-btn{bottom:1rem;right:1rem;width:52px;height:52px}}@media(max-width:480px){.zoom-controls{padding:.125rem}.zoom-btn{width:28px;height:28px}.app-title{font-size:.875rem}.app-title svg{display:none}.compact-toggle,.donate-btn{width:32px;height:32px}}.mobile-toolbar{display:none}.desktop-controls{display:flex;align-items:center;gap:.75rem}@media(max-width:768px){.desktop-controls{display:none}.mobile-toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.mobile-toolbar .zoom-controls{flex:1;margin-right:.5rem}.mobile-toggles{display:flex;align-items:center;gap:.5rem}}
