:root{--bg-body: #fff;--bg-sidebar: #fafafa;--bg-navbar: rgba(255,255,255,.85);--bg-filter-panel: #fff;--bg-hover: rgba(0,0,0,.04);--bg-hover-strong: rgba(0,0,0,.08);--bg-hover-subtle: rgba(0,0,0,.02);--bg-hover-btn: rgba(0,0,0,.06);--bg-input: rgba(0,0,0,.04);--bg-active: rgba(59,130,246,.1);--bg-overlay: rgba(0,0,0,.3);--bg-lightbox: rgba(255,255,255,.95);--bg-search-btn: rgba(0,0,0,.04);--bg-avatar: rgba(59,130,246,.15);--text-primary: #1a1a1a;--text-secondary: #555;--text-muted: #777;--text-dim: #999;--text-subtle: #aaa;--text-white: #fff;--text-active: #2563eb;--text-dark: #1a1a1a;--border-subtle: rgba(0,0,0,.06);--border-light: rgba(0,0,0,.08);--border-input: rgba(0,0,0,.12);--accent: #3b82f6;--accent-light: #60a5fa;--accent-bg: rgba(59,130,246,.9);--accent-hover-bg: rgba(59,130,246,.12);--scrubber-dot: #ccc;--scrubber-year: #999;--scrubber-label-bg: rgba(30,30,30,.9);--scrubber-label-color: #fff;--scrubber-label-shadow: rgba(0,0,0,.15);--skeleton-bg: rgba(0,0,0,.06);--shadow-overlay: rgba(0,0,0,.3)}.dark{--bg-body: #0d0d0d;--bg-sidebar: #111;--bg-navbar: rgba(13,13,13,.85);--bg-filter-panel: #1a1a1a;--bg-hover: rgba(255,255,255,.06);--bg-hover-strong: rgba(255,255,255,.1);--bg-hover-subtle: rgba(255,255,255,.04);--bg-hover-btn: rgba(255,255,255,.08);--bg-input: rgba(255,255,255,.06);--bg-active: rgba(59,130,246,.12);--bg-overlay: rgba(0,0,0,.5);--bg-lightbox: rgba(0,0,0,.92);--bg-search-btn: rgba(255,255,255,.06);--bg-avatar: rgba(59,130,246,.2);--text-primary: #e0e0e0;--text-secondary: #bbb;--text-muted: #888;--text-dim: #666;--text-subtle: #555;--text-white: #fff;--text-active: #60a5fa;--text-dark: #1a1a1a;--border-subtle: rgba(255,255,255,.06);--border-light: rgba(255,255,255,.08);--border-input: rgba(255,255,255,.1);--scrubber-dot: #555;--scrubber-year: #888;--scrubber-label-bg: rgba(240,240,245,.95);--scrubber-label-color: #1a1a1a;--scrubber-label-shadow: rgba(0,0,0,.25);--skeleton-bg: rgba(255,255,255,.04);--shadow-overlay: rgba(0,0,0,.5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-body);color:var(--text-primary);overflow-x:hidden;-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}.app-layout{display:grid;grid-template-columns:256px 1fr;grid-template-rows:56px 1fr;grid-template-areas:"navbar navbar" "sidebar main";height:100vh;height:100dvh;transition:grid-template-columns .3s ease}.app-layout.sidebar-overlay .app-sidebar{position:fixed;left:-256px;top:56px;bottom:0;z-index:200;width:min(100vw,256px)!important;box-shadow:8px 0 24px var(--shadow-overlay);transition:left .3s ease;display:flex!important;flex-direction:column}.app-layout.sidebar-overlay.sidebar-open .app-sidebar{left:0}.app-sidebar{grid-area:sidebar;background:var(--bg-sidebar);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.navbar-brand{display:flex;align-items:center;gap:10px}.navbar-brand svg{width:28px;height:28px;flex-shrink:0}.navbar-brand span{font-size:18px;font-weight:600;white-space:nowrap}.sidebar-nav{flex:1;overflow-y:auto;padding:8px 0;scrollbar-width:none}.sidebar-nav::-webkit-scrollbar{display:none}.sidebar-section-title{padding:16px 20px 6px;font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.sidebar-item{display:flex;align-items:center;gap:12px;padding:10px 20px;margin:0 8px;border-radius:8px;font-size:14px;color:var(--text-secondary);cursor:pointer;text-decoration:none;transition:background .15s}.sidebar-sub-item{padding:6px 20px 6px 48px;margin:0 8px;font-size:12px;color:var(--text-muted);gap:8px}.sidebar-sub-item:hover{background:var(--bg-hover)}.sidebar-sub-item.active{color:var(--text-active);background:var(--bg-active);font-weight:600}.sidebar-sub-item .sub-count{margin-left:auto;font-size:11px;color:var(--text-dim)}.sidebar-item:hover{background:var(--bg-hover);color:var(--text-white)}.sidebar-item.active{background:var(--bg-active);color:var(--text-active)}.sidebar-item svg{width:20px;height:20px;flex-shrink:0;opacity:.7}.sidebar-item.active svg{opacity:1}.sidebar-parent{padding-right:8px}.sidebar-parent-link{display:flex;align-items:center;gap:12px;flex:1;text-decoration:none;color:inherit;min-width:0}.sidebar-chevron{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background .15s}.sidebar-chevron:hover{background:var(--bg-hover)}.sidebar-chevron svg{width:16px;height:16px;transition:transform .2s}.sidebar-chevron.collapsed svg{transform:rotate(-90deg)}.sidebar-sub-group.collapsed{display:none}.sidebar-bottom{padding:12px 20px;border-top:1px solid var(--border-subtle);font-size:12px;color:var(--text-subtle)}.sidebar-status{padding:12px 20px 16px;border-top:1px solid var(--border-subtle);font-size:12px;color:var(--text-muted);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.status-line{font-size:12px;color:var(--text-secondary)}.status-section{margin-top:6px}.status-row{display:flex;align-items:center;gap:8px}.status-label{font-size:11px;color:var(--text-dim);white-space:nowrap;flex-shrink:0}.status-progress{flex:1;height:4px;border-radius:2px;background:var(--bg-hover);overflow:hidden}.status-progress-fill{height:100%;border-radius:2px;background:var(--text-active);transition:width .3s linear}.status-meta{font-size:10px;color:var(--text-dim);margin-top:2px}.status-meta-right{text-align:right}.status-runtime{margin-top:8px;padding-top:6px;border-top:1px solid var(--border-subtle);font-size:10px;color:var(--text-dim);text-align:center}.sidebar-overlay-bg{display:none;position:fixed;inset:56px 0 0;z-index:199;background:var(--bg-overlay)}.sidebar-overlay-bg.visible{display:block}.app-navbar{grid-area:navbar;background:var(--bg-navbar);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 16px;z-index:100}.navbar-left{display:flex;align-items:center;gap:12px}.navbar-right{display:flex;align-items:center;gap:8px;position:relative;margin-left:16px}.navbar-search-area{display:flex;align-items:center;gap:8px;margin-left:auto}.search-bar{display:flex;align-items:center;background:var(--bg-input);border:1px solid var(--border-input);border-radius:8px;padding:0 12px;gap:8px;width:240px;height:36px;transition:border-color .2s,width .3s}.search-bar:focus-within{border-color:var(--accent);width:320px}.search-icon{width:18px;height:18px;color:var(--text-muted);flex-shrink:0}.search-input{flex:1;border:none;background:none;outline:none;color:var(--text-primary);font-size:14px;padding:0}.search-input::placeholder{color:var(--text-dim)}.search-mobile-btn{display:none;width:36px;height:36px;align-items:center;justify-content:center;background:var(--bg-search-btn);color:var(--text-secondary);cursor:pointer;border-radius:8px;border:1px solid var(--border-input)}.search-mobile-btn:hover{background:var(--bg-hover-strong);color:var(--text-white)}.search-mobile-btn svg{width:20px;height:20px}.search-back-btn{display:none;width:36px;height:36px;align-items:center;justify-content:center;flex-shrink:0;border:none;background:none;color:var(--text-secondary);cursor:pointer;border-radius:8px}.search-back-btn:hover{background:var(--bg-hover-btn);color:var(--text-white)}.search-back-btn svg{width:20px;height:20px}@media(max-width:768px){.app-navbar.search-active .navbar-left{display:none}}.app-navbar.search-active .search-bar{flex:1;width:100%;max-width:none}.app-navbar.search-active .search-back-btn{display:flex}.app-navbar.search-active .search-icon,.app-navbar.search-active .navbar-right{display:none}.app-navbar.search-active .navbar-search-area{flex:1;margin-left:0}@media(min-width:769px){.search-mobile-btn{display:none!important}}.filter-btn,.theme-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-input);color:var(--text-secondary);cursor:pointer;border-radius:8px;border:1px solid var(--border-input)}.filter-btn:hover,.theme-btn:hover{background:var(--bg-hover-strong);color:var(--text-white)}.filter-btn svg,.theme-btn svg{width:18px;height:18px}.filter-overlay{display:none;position:fixed;inset:0;z-index:300;background:#00000059;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);align-items:center;justify-content:center}.filter-overlay.visible{display:flex}.filter-modal{background:var(--bg-body);border-radius:14px;width:min(540px,92vw);max-height:85vh;display:flex;flex-direction:column;box-shadow:0 12px 48px #0003;overflow:hidden}.filter-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.filter-modal-title{font-size:18px;font-weight:600;color:var(--text-primary)}.filter-close-btn{width:32px;height:32px;border:none;background:none;font-size:22px;color:var(--text-dim);cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center}.filter-close-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.filter-modal-body{flex:1;overflow-y:auto;padding:8px 20px 16px}.filter-modal-body::-webkit-scrollbar{width:4px}.filter-modal-body::-webkit-scrollbar-thumb{background:var(--border-input);border-radius:2px}.filter-modal-footer{display:flex;gap:10px;padding:12px 20px;border-top:1px solid var(--border-subtle);flex-shrink:0}.filter-apply-btn{flex:1;padding:10px 24px;border:none;border-radius:10px;background:var(--accent);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s}.filter-apply-btn:hover{opacity:.85}.filter-clear-btn{padding:10px 24px;border:1px solid var(--border-input);border-radius:10px;background:transparent;color:var(--text-secondary);font-size:15px;cursor:pointer;transition:background .15s}.filter-clear-btn:hover{background:var(--bg-hover)}.filter-error{color:#ee7785;font-size:14px;text-align:center;padding:24px}.filter-group{margin-top:16px}.filter-group-label{font-size:12px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.filter-search-input{width:100%;padding:10px 14px;border:1px solid var(--border-input);border-radius:10px;font-size:14px;color:var(--text-primary);background:var(--bg-input);outline:none}.filter-search-input:focus{border-color:var(--accent)}.filter-checkbox-list{display:flex;flex-wrap:wrap;gap:6px}.filter-checkbox-item{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;font-size:13px;color:var(--text-secondary);cursor:pointer;background:var(--bg-input);border:1px solid var(--border-subtle);user-select:none}.filter-checkbox-item:hover{background:var(--bg-hover)}.filter-checkbox-item input[type=checkbox]{accent-color:var(--accent);margin:0}.filter-checkbox-item input[type=checkbox]:disabled{opacity:.4;cursor:not-allowed}.filter-checkbox-item:has(input:checked){background:var(--bg-active);border-color:var(--accent);color:var(--text-active)}.filter-rating-row{display:flex;align-items:center;gap:8px;margin-top:8px}.filter-rating-label{font-size:13px;color:var(--text-dim)}.filter-select{padding:4px 10px;border:1px solid var(--border-input);border-radius:6px;font-size:13px;color:var(--text-primary);background:var(--bg-input);outline:none}.filter-radio-item{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--text-secondary);cursor:pointer}.filter-radio-item input[type=radio]{accent-color:var(--accent)}.filter-chips{flex-shrink:0;display:flex;flex-wrap:wrap;gap:8px;padding:10px 16px 6px;background:var(--bg-body);border-bottom:1px solid var(--border-subtle);transition:max-height .25s ease,padding .25s ease,opacity .25s ease,border-width .25s ease;max-height:80px;opacity:1;overflow:hidden}.filter-chips-hidden{max-height:0;opacity:0;padding-top:0;padding-bottom:0;border-bottom-width:0}.filter-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:9999px;background:var(--bg-active);font-size:13px;border:1px solid var(--accent);color:var(--text-active)}.filter-chip-label{font-weight:500}.filter-chip-value{opacity:.8}.filter-chip-remove{margin-left:2px;cursor:pointer;font-size:16px;line-height:1;opacity:.5;padding:0 2px}.filter-chip-remove:hover{opacity:1}.filter-chip-clear{background:var(--bg-input);border-color:var(--border-input);color:var(--text-muted);cursor:pointer;font-size:12px}.filter-chip-clear:hover{background:var(--bg-hover);color:var(--text-primary)}@media(max-width:768px){.filter-modal{width:100vw;max-width:100vw;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;border-radius:0}.filter-modal-header{padding:14px 16px;flex-shrink:0}.filter-modal-body{padding:8px 16px 16px}.filter-modal-footer{padding:10px 16px;padding-bottom:max(10px,env(safe-area-inset-bottom));flex-shrink:0}}.hamburger-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-secondary);cursor:pointer;border-radius:8px}.hamburger-btn:hover{background:var(--bg-hover-btn);color:var(--text-white)}.hamburger-btn svg{width:24px;height:24px}@media(min-width:851px){.app-layout.sidebar-overlay{grid-template-columns:0px 1fr}.app-layout:not(.sidebar-overlay) .hamburger-btn{display:none}.app-layout:not(.sidebar-overlay) .app-sidebar{display:flex}}.navbar-avatar{width:32px;height:32px;border-radius:50%;background:var(--bg-avatar);color:var(--text-active);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;cursor:pointer}.app-main{grid-area:main;overflow:hidden;display:flex;flex-direction:column}.timeline-scroll{flex:1;overflow-y:auto;overflow-x:hidden;contain:strict;scrollbar-width:none}.timeline-scroll::-webkit-scrollbar{display:none}.virtual-timeline{position:relative}.month-group{position:absolute;left:0;right:0;contain:layout size paint;backface-visibility:hidden;transform-style:flat}.month-group-skeleton{position:absolute;left:16px;right:16px;top:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:6px;background:var(--skeleton-bg);animation:skeleton-pulse 1.8s ease-in-out infinite}.month-group-skeleton-label{font-size:16px;font-weight:500;color:var(--text-dim);margin-bottom:8px}.month-group-skeleton-hint{font-size:12px;color:var(--text-muted)}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:.7}}.day-group{position:absolute;contain:layout paint style}.day-header{display:flex;align-items:center;height:24px;padding:28px 0 20px;font-size:14px;font-weight:500;color:var(--text-secondary)}.day-header span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-grid{position:relative;overflow:hidden;user-select:none}.photo-item{position:absolute;overflow:hidden;border-radius:4px;cursor:pointer;transition:transform .2s ease}.photo-item:hover{transform:scale(1.02);z-index:10}.photo-item img{width:100%;height:100%;object-fit:cover;display:block}.photo-item-skeleton{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-radius:4px}.photo-item-skeleton-icon{opacity:.7;color:#1a1a1a}.photo-item-skeleton-label{font-size:12px;font-weight:500;color:#1a1a1a}.photo-item-skeleton-hint{font-size:10px;color:#1a1a1a}.photo-item .overlay{position:absolute;bottom:0;left:0;right:0;padding:6px 8px;background:linear-gradient(transparent,#000000a6);font-size:11px;color:#fff;opacity:0;transition:opacity .2s}.photo-item:hover .overlay{opacity:1}.scrubber{position:fixed;right:0;top:56px;z-index:50;width:60px;height:calc(100vh - 56px);height:calc(100dvh - 56px);padding:31.75px 0 10px;user-select:none;cursor:row-resize;background:transparent}.scrubber-track{position:relative;width:100%;height:100%}.scrubber-segment{position:relative;width:100%}.scrubber-segment-year{position:absolute;right:20px;bottom:0;font-family:SF Mono,Fira Code,monospace;font-size:13px;color:var(--scrubber-year)}.scrubber-segment-dot{position:absolute;right:12px;bottom:0;width:4px;height:4px;border-radius:50%;background:var(--scrubber-dot)}.scrubber-indicator{position:absolute;right:0;height:2px;width:40px;background:var(--accent);z-index:2;border-radius:1px;transition:top .08s linear}.scrubber-hover-label{position:fixed;right:62px;background:var(--scrubber-label-bg);color:var(--scrubber-label-color);font-size:14px;font-weight:500;padding:4px 10px;border-radius:6px 0 0 6px;white-space:nowrap;pointer-events:none;z-index:55;box-shadow:0 0 8px var(--scrubber-label-shadow);max-width:256px;overflow:hidden;text-overflow:ellipsis;transform:translateY(-50%);border-bottom:2px solid var(--accent)}.scrubber-mobile-pill{display:none;position:absolute;right:0;width:32px;height:50px;border-radius:9999px 0 0 9999px;background:var(--accent);z-index:3;transform:translateY(-50%);align-items:center;justify-content:center;pointer-events:none}.scrubber-mobile-pill-arrows{color:#fff;font-size:16px;line-height:1}.scrubber-mobile-label{display:none;position:fixed;right:40px;background:var(--accent-bg);color:#fff;font-size:14px;font-weight:600;padding:8px 16px;border-radius:9999px;white-space:nowrap;pointer-events:none;z-index:55;transform:translateY(-50%)}.theme-btn .sun-icon,.theme-btn .moon-icon{transition:opacity .2s}.dark .theme-btn .sun-icon{display:none}:root:not(.dark) .theme-btn .moon-icon{display:none}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:var(--old-z, 1);animation:var(--old-anim, none)}::view-transition-new(root){z-index:var(--new-z, 2);animation:var(--new-anim, none)}@keyframes themeExpand{0%{clip-path:circle(0 at var(--tx) var(--ty))}to{clip-path:circle(150% at var(--tx) var(--ty))}}@keyframes themeShrink{0%{clip-path:circle(150% at var(--tx) var(--ty))}to{clip-path:circle(0 at var(--tx) var(--ty))}}#lightbox{position:fixed;inset:0;z-index:9999;background:var(--bg-lightbox);display:flex;align-items:center;justify-content:center;cursor:pointer}#lightbox img{max-width:90vw;max-height:80vh;object-fit:contain;border-radius:4px}#lightbox p{color:var(--text-primary);margin-top:12px;font-size:16px}@media(max-width:850px){.app-layout{grid-template-columns:1fr;grid-template-rows:56px 1fr;grid-template-areas:"navbar" "main"}.app-sidebar{display:none}.app-layout.sidebar-overlay .app-sidebar{display:flex!important;position:fixed;left:-100vw;top:56px;bottom:0;z-index:200;width:min(100vw,256px);box-shadow:8px 0 24px var(--shadow-overlay);transition:left .3s ease}.app-layout.sidebar-overlay.sidebar-open .app-sidebar{left:0}}@media(max-width:768px){.navbar-brand span,.search-bar{display:none}.search-mobile-btn,.app-navbar.search-active .search-bar{display:flex}.app-navbar.search-active .search-mobile-btn{display:none}.search-bar{width:100%}.search-bar:focus-within{width:100%}.scrubber{width:20px;padding:25px 0}.scrubber.dragging{width:100vw}.scrubber-indicator{width:14px}.scrubber-segment-year{display:none}.scrubber-segment-dot{right:4px;width:3px;height:3px}.scrubber-hover-label{display:none!important}.scrubber-mobile-pill{display:flex}.scrubber-mobile-label{display:block}.day-header{padding:20px 0 12px;font-size:12px}}
