.timeline-event{position:relative;display:flex;align-items:flex-start;padding:var(--space-lg) 0;opacity:0;transform:translateY(30px);transition:opacity .8s ease-in-out,transform .8s ease-in-out}.timeline-event--visible{opacity:1;transform:translateY(0)}.timeline-event--left{flex-direction:row-reverse;padding-right:calc(50% + var(--space-xl))}.timeline-event--right{flex-direction:row;padding-left:calc(50% + var(--space-xl))}.timeline-event__node{position:absolute;left:50%;transform:translate(-50%);z-index:2}.timeline-event__node-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:var(--shadow-md),0 0 0 4px var(--cream);transition:transform .45s ease-in-out,box-shadow .45s ease-in-out}.timeline-event:hover .timeline-event__node-dot{transform:scale(1.1);box-shadow:var(--shadow-lg),0 0 0 4px var(--cream)}.timeline-event__date-badge{position:absolute;top:var(--space-lg);font-size:.8rem;font-weight:500;color:var(--text-secondary);background:var(--cream);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-full);white-space:nowrap}.timeline-event--left .timeline-event__date-badge{left:calc(50% + var(--space-xl) + var(--space-sm))}.timeline-event--right .timeline-event__date-badge{right:calc(50% + var(--space-xl) + var(--space-sm))}.timeline-event__card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;width:100%;max-width:400px;border-left:4px solid var(--category-color, var(--dusty-rose));transition:box-shadow .45s ease-in-out,transform .45s ease-in-out}.timeline-event:hover .timeline-event__card{box-shadow:var(--shadow-md);transform:translateY(-2px)}.timeline-event__header{padding:var(--space-sm) var(--space-md);display:flex;align-items:center;gap:var(--space-sm)}.timeline-event__category-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:4px 10px;border-radius:var(--radius-full);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;color:#fff}.timeline-event__category-badge svg{flex-shrink:0}.timeline-event__gallery{position:relative;width:100%;aspect-ratio:16 / 10;overflow:hidden;background:var(--cream-dark)}.timeline-event__photo{width:100%;height:100%;object-fit:cover;transition:transform .45s ease-in-out}.timeline-event:hover .timeline-event__photo{transform:scale(1.02)}.timeline-event__gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:32px;height:32px;border:none;border-radius:50%;background:#ffffffe6;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .35s ease-in-out,background-color .35s ease-in-out;box-shadow:var(--shadow-sm)}.timeline-event__gallery:hover .timeline-event__gallery-nav{opacity:1}.timeline-event__gallery-nav:hover{background:#fff}.timeline-event__gallery-nav--prev{left:var(--space-sm)}.timeline-event__gallery-nav--next{right:var(--space-sm)}.timeline-event__gallery-dots{position:absolute;bottom:var(--space-sm);left:50%;transform:translate(-50%);display:flex;gap:var(--space-xs)}.timeline-event__gallery-dot{width:8px;height:8px;border:none;border-radius:50%;background:#ffffff80;cursor:pointer;padding:0;transition:background-color .35s ease-in-out,transform .35s ease-in-out}.timeline-event__gallery-dot:hover{background:#fffc}.timeline-event__gallery-dot--active{background:#fff;transform:scale(1.2)}.timeline-event__linked-photos{padding:var(--space-sm) var(--space-md);border-top:1px solid var(--cream-dark)}.timeline-event__linked-photos-label{display:flex;align-items:center;gap:var(--space-xs);font-size:.7rem;color:var(--text-muted);margin-bottom:var(--space-xs)}.timeline-event__linked-photos-strip{display:flex;gap:var(--space-xs);overflow-x:auto;scrollbar-width:thin}.timeline-event__linked-photo{width:56px;height:56px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;border:2px solid var(--cream);transition:border-color .3s ease-in-out,transform .3s ease-in-out}.timeline-event__linked-photo:hover{border-color:var(--dusty-rose-light);transform:scale(1.05)}.timeline-event__content{padding:var(--space-md)}.timeline-event__title{font-family:var(--font-heading);font-size:1.1rem;font-weight:500;color:var(--text-primary);margin-bottom:var(--space-xs);line-height:1.3}.timeline-event__description{font-size:.9rem;color:var(--text-secondary);line-height:1.6}.timeline-event__actions{display:flex;justify-content:flex-end;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-top:1px solid var(--cream-dark);opacity:0;transition:opacity .35s ease-in-out}.timeline-event:hover .timeline-event__actions{opacity:1}@media(max-width:768px){.timeline-event{flex-direction:row!important;padding-left:var(--space-2xl)!important;padding-right:0!important}.timeline-event__node{left:0;transform:none}.timeline-event__date-badge{position:relative;top:0;left:0!important;right:auto!important;margin-bottom:var(--space-sm)}.timeline-event__card{max-width:100%;margin-left:var(--space-md)}.timeline-event__actions,.timeline-event__gallery-nav{opacity:1}}.timeline-event--left{transform:translate(-30px)}.timeline-event--right{transform:translate(30px)}.timeline-event--visible.timeline-event--left,.timeline-event--visible.timeline-event--right{transform:translate(0)}@media(max-width:768px){.timeline-event--left,.timeline-event--right{transform:translate(-30px)}.timeline-event--visible.timeline-event--left,.timeline-event--visible.timeline-event--right{transform:translate(0)}}.add-memory-form{display:flex;flex-direction:column;gap:var(--space-lg)}.add-memory-form__field{display:flex;flex-direction:column;gap:var(--space-sm)}.add-memory-form__categories{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.add-memory-form__category-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:2px solid var(--cream-dark);border-radius:var(--radius-full);background:#fff;color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease}.add-memory-form__category-btn:hover:not(:disabled){border-color:var(--cat-color, var(--dusty-rose));color:var(--text-primary)}.add-memory-form__category-btn--active{border-color:var(--cat-color, var(--dusty-rose));background:var(--cream);color:var(--text-primary)}.add-memory-form__category-btn:disabled{opacity:.6;cursor:not-allowed}.add-memory-form__category-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.add-memory-form__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl);border:2px dashed var(--cream-dark);border-radius:var(--radius-md);background:var(--cream);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.add-memory-form__dropzone:hover:not(.add-memory-form__dropzone--disabled){border-color:var(--dusty-rose);background:var(--dusty-rose-light)}.add-memory-form__dropzone--dragging{border-color:var(--dusty-rose);background:var(--dusty-rose-light);border-style:solid}.add-memory-form__dropzone--disabled{opacity:.6;cursor:not-allowed}.add-memory-form__dropzone svg{color:var(--text-muted)}.add-memory-form__dropzone-text{font-size:.95rem;font-weight:500;text-align:center}.add-memory-form__dropzone-hint{font-size:.8rem;color:var(--text-muted)}.add-memory-form__file-input{display:none}.add-memory-form__photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:var(--space-sm);margin-top:var(--space-sm)}.add-memory-form__photo-item{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden}.add-memory-form__photo-preview{width:100%;height:100%;object-fit:cover}.add-memory-form__photo-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:#0009;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease,background-color .2s ease}.add-memory-form__photo-item:hover .add-memory-form__photo-remove{opacity:1}.add-memory-form__photo-remove:hover{background:#000c}.add-memory-form__photo-remove:disabled{cursor:not-allowed;opacity:.5}.add-memory-form__error{padding:var(--space-sm) var(--space-md);background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-sm);color:#dc2626;font-size:.9rem}.add-memory-form__actions{display:flex;justify-content:flex-end;gap:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--cream-dark)}@media(max-width:480px){.add-memory-form__categories{flex-direction:column}.add-memory-form__category-btn{width:100%;justify-content:flex-start}.add-memory-form__dropzone{padding:var(--space-lg)}.add-memory-form__actions{flex-direction:column}.add-memory-form__actions>*{width:100%}}.timeline-page{min-height:100vh;background:linear-gradient(180deg,var(--cream) 0%,var(--dusty-rose-light) 100%);padding-bottom:calc(var(--space-2xl) + 60px)}.timeline-page__header{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);background:#fff;border-bottom:1px solid var(--cream-dark);position:sticky;top:0;z-index:10}.timeline-page__back{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color .35s ease-in-out,color .35s ease-in-out}.timeline-page__back:hover{background:var(--cream);color:var(--text-primary)}.timeline-page__title-area{flex:1}.timeline-page__title{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-heading);font-size:1.5rem;font-weight:500;color:var(--text-primary);margin:0}.timeline-page__title svg{color:var(--dusty-rose)}.timeline-page__subtitle{font-size:.85rem;color:var(--text-muted);margin-top:var(--space-xs)}.timeline-page__filter-btn{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color .35s ease-in-out,color .35s ease-in-out}.timeline-page__filter-btn:hover,.timeline-page__filter-btn--active{background:var(--cream);color:var(--text-primary)}.timeline-page__filter-badge{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--dusty-rose)}.timeline-page__filters{padding:var(--space-lg) var(--space-xl);background:#fff;border-bottom:1px solid var(--cream-dark);animation:slideDown .4s ease-in-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.timeline-page__filter-group{margin-bottom:var(--space-md)}.timeline-page__filter-group:last-of-type{margin-bottom:var(--space-sm)}.timeline-page__filter-label{display:block;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:var(--space-sm)}.timeline-page__filter-options{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.timeline-page__filter-option{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid var(--cream-dark);border-radius:var(--radius-full);background:#fff;color:var(--text-secondary);font-size:.85rem;cursor:pointer;transition:all .35s ease-in-out}.timeline-page__filter-option:hover{border-color:var(--cat-color, var(--dusty-rose));color:var(--text-primary)}.timeline-page__filter-option--active{border-color:var(--cat-color, var(--dusty-rose));background:var(--cream);color:var(--text-primary);font-weight:500}.timeline-page__filter-dot{width:8px;height:8px;border-radius:50%}.timeline-page__clear-filters{padding:var(--space-xs) 0;border:none;background:transparent;color:var(--rose-dark);font-size:.85rem;font-weight:500;cursor:pointer;transition:color .35s ease-in-out}.timeline-page__clear-filters:hover{color:var(--dusty-rose);text-decoration:underline}.timeline-page__content{max-width:1000px;margin:0 auto;padding:var(--space-xl)}.timeline-page__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-md);color:var(--text-secondary)}.timeline-page__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-2xl);min-height:50vh}.timeline-page__empty svg{color:var(--text-muted);opacity:.5;margin-bottom:var(--space-lg)}.timeline-page__empty h2{font-family:var(--font-heading);font-size:1.5rem;font-weight:500;color:var(--text-primary);margin-bottom:var(--space-sm)}.timeline-page__empty p{font-size:1rem;color:var(--text-secondary);margin-bottom:var(--space-lg);max-width:400px}.timeline-page__timeline{position:relative;padding:var(--space-lg) 0}.timeline-page__line{position:absolute;left:50%;top:0;bottom:0;width:3px;background:linear-gradient(to bottom,transparent 0%,var(--dusty-rose-light) 2%,var(--dusty-rose-light) 98%,transparent 100%);transform:translate(-50%);border-radius:2px}.timeline-page__year-group{position:relative;margin-bottom:var(--space-2xl)}.timeline-page__year-group:last-child{margin-bottom:0}.timeline-page__year-badge{position:absolute;left:50%;transform:translate(-50%);padding:var(--space-xs) var(--space-md);background:var(--dusty-rose);color:#fff;font-family:var(--font-heading);font-size:1rem;font-weight:600;border-radius:var(--radius-full);box-shadow:var(--shadow-md);z-index:3}.timeline-page__fab{position:fixed;bottom:var(--space-xl);right:var(--space-xl);width:56px;height:56px;padding:0;border:none;border-radius:50%;background:var(--dusty-rose);color:#fff;cursor:pointer;box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;transition:background-color .35s ease-in-out,transform .35s ease-in-out,box-shadow .35s ease-in-out;z-index:100}.timeline-page__fab:hover{background:var(--rose-dark);transform:scale(1.05);box-shadow:0 8px 40px #c8929a66}.timeline-page__fab:active{transform:scale(.98)}@media(max-width:768px){.timeline-page__header{padding:var(--space-md)}.timeline-page__title{font-size:1.25rem}.timeline-page__filters,.timeline-page__content{padding:var(--space-md)}.timeline-page__line{left:16px;transform:none}.timeline-page__year-badge{left:16px;transform:translate(-50%);font-size:.9rem}.timeline-page__fab{bottom:var(--space-lg);right:var(--space-lg);width:52px;height:52px}}@media(max-width:480px){.timeline-page__title-area{display:none}.timeline-page__filter-options{flex-direction:column}.timeline-page__filter-option{width:100%;justify-content:flex-start}}.timeline-page{scroll-padding-top:calc(60px + var(--space-lg))}.timeline-page__load-more{display:flex;justify-content:center;padding:var(--space-xl) 0}
