:root{color-scheme:light dark;font-family:Inter,SF Pro Display,system-ui,sans-serif;line-height:1.5;font-weight:400;color:#e8e8ec;background-color:#0b0b0f;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--topbar-height: 48px;--safe-top: env(safe-area-inset-top, 0px);--sticky-topbar-offset: calc(var(--topbar-height) + var(--safe-top))}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#0b0b0f}.app{min-height:100vh;padding-top:0;padding-right:env(safe-area-inset-right,0px);padding-bottom:max(48px,env(safe-area-inset-bottom,0px));padding-left:env(safe-area-inset-left,0px)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--sticky-topbar-offset);padding:var(--safe-top) calc(10px + env(safe-area-inset-right,0px)) 0 calc(10px + env(safe-area-inset-left,0px));position:sticky;top:0;z-index:20;background:#0b0b0fe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar-left{display:flex;align-items:center;gap:12px}.brand{font-size:.95rem;letter-spacing:.2em;text-transform:uppercase;color:#a6a7ff;text-decoration:none}.brand:hover{color:#c4c5ff}.icon-button{border:1px solid rgba(130,130,180,.4);background:#181824b3;color:#e8e8ec;border-radius:999px;padding:6px 14px;margin:2px 0;font-size:1.1rem;cursor:pointer}.icon-button:hover{background:#242434e6}.icon-button:disabled{opacity:.45;cursor:not-allowed}.topbar-more-button{display:inline-flex;align-items:center;justify-content:center;padding-left:10px;padding-right:10px}.topbar-more-icon{display:block;flex-shrink:0}.topbar-actions{display:flex;gap:8px;align-items:center;position:relative}.filter-button{font-size:.85rem;padding:8px 12px}.filter-button.active{border-color:#7a7affb3;background:#3c3c6e73}.topbar-actions a.filter-button{text-decoration:none;color:inherit}.device-filter{position:relative}.device-filter-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;border:1px solid rgba(120,120,160,.4);border-radius:12px;padding:8px;background:#12121cfa;box-shadow:0 10px 28px #00000073;display:flex;flex-direction:column;gap:4px;z-index:40}.device-filter-item{border:none;border-radius:10px;background:transparent;color:#e8e8ec;text-align:left;padding:8px 10px;font-size:.88rem;cursor:pointer}.device-filter-item:hover{background:#242434cc}.device-filter-item.active{background:#4848808c}.device-filter-empty{margin:4px 6px;font-size:.82rem}.search{display:flex;align-items:center;gap:8px;padding:4px;border-radius:999px;transition:background .16s ease}.search:hover{background:#18182459}.topbar-left.searching .search{flex:1;min-width:0;background:#181824b3}.search-input{display:none;border:none;background:transparent;color:#e8e8ec;outline:none;font-size:.9rem}.topbar-left:not(.searching) .search>.icon-button.filter-button{display:none}.topbar-left.searching .search-input{display:block;flex:1;min-width:0;width:auto;opacity:1}.topbar-left.searching .search>.icon-button.filter-button{display:inline-flex}.topbar:has(.topbar-left.searching) .topbar-actions{display:none}.date-range{font-size:.85rem;color:#b9bbcc;letter-spacing:.08em;text-transform:uppercase;font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,Monaco,Consolas,monospace}.toast{margin:8px 0 16px;padding:10px 14px;border-radius:10px;background:#242434e6;border:1px solid rgba(120,120,160,.35);font-size:.9rem;max-width:520px}.toast.error{border-color:#ff6a7a99;color:#ff6a7a}.timeline-page{width:100%;margin-top:8px}.people-page-body{max-width:960px;margin:0 auto;padding:0 0 24px}.people-page-body>.people-section:first-of-type{margin-top:0;padding-top:0;border-top:none}.people-page-intro{margin:0 0 12px;line-height:1.45}.people-page-footer,.people-section{margin-top:28px;padding-top:20px;border-top:1px solid rgba(120,120,160,.2)}.people-section-title{margin:0 0 6px;font-size:1rem;font-weight:600;color:#e4e4ec}.people-section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}.people-section-title-row .people-section-title{margin:0;flex:1;min-width:0}.people-identity-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.people-identity-actions--orphan-suggest{flex-wrap:wrap;justify-content:flex-end;max-width:min(100%,520px)}.people-orphan-btn{font-weight:600}.people-orphan-btn--yes{color:#fecdd3!important;background:#6e1420e6!important;border-color:#a02d3af2!important}.people-orphan-btn--yes:hover:not(:disabled){background:#821c2af2!important}.people-orphan-btn--no{color:#c8f5dc!important;background:#0c4830e6!important;border-color:#1c6e48f2!important}.people-orphan-btn--no:hover:not(:disabled){background:#10583af2!important}.people-orphan-btn:disabled{opacity:.42}.people-identity-action-btn{font-size:.8rem;padding:4px 10px}.button.ghost.people-identity-action-btn.is-on{border-color:#8ef3ff73;color:#c8f6ff;background:#5a648c59}.people-scan-status-line{margin:0 0 10px;font-size:.78rem;word-break:break-all}.people-scan-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.people-scan-bar-btn{font-size:.8rem!important;padding:6px 14px!important;line-height:1.2;border-radius:10px}.people-scan-bar-meta{font-size:.75rem;line-height:1.25}.people-section-sub{margin:0 0 12px;font-size:.85rem}.unmatched-faces-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px;margin-top:8px}.unmatched-face-tile{padding:0;border:1px solid rgba(120,120,160,.3);border-radius:10px;overflow:hidden;background:#ffffff08;cursor:pointer;aspect-ratio:1}.unmatched-face-tile:hover{border-color:#78b4ff73}.identity-face-tile-wrap{position:relative;aspect-ratio:1}.identity-face-tile-wrap .identity-face-tile{width:100%;height:100%}.identity-face-tile-hover{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;padding:3px;pointer-events:none;opacity:0;transition:opacity .15s ease}.identity-face-tile-wrap:hover .identity-face-tile-hover{opacity:1}.identity-face-tile-wrap.orphan-suggest-tile-wrap:hover:not(.orphan-suggest-tile-wrap--attach-open) .identity-face-tile-hover{opacity:0!important}.identity-face-tile-wrap.orphan-suggest-tile-wrap--attach-open .identity-face-tile-hover{opacity:1!important}.identity-face-tile-wrap.orphan-suggest-tile-wrap--attach-open .identity-face-attach-btn{pointer-events:auto!important}.identity-face-tile-wrap.orphan-suggest-tile-wrap:not(.orphan-suggest-tile-wrap--attach-open) .identity-face-tile-hover,.identity-face-tile-wrap.orphan-suggest-tile-wrap:not(.orphan-suggest-tile-wrap--attach-open) .identity-face-tile-hover *{pointer-events:none!important}.identity-face-reject-btn{pointer-events:auto;width:100%;padding:3px 2px;font-size:.58rem;line-height:1.15;color:#fff;background:#b43c46eb;border:1px solid rgba(255,160,160,.5);border-radius:5px;cursor:pointer}.identity-face-reject-btn:hover{background:#c84650fa}.identity-face-attach-btn{pointer-events:auto;width:100%;padding:3px 2px;font-size:.58rem;line-height:1.15;color:#fff;background:#32825feb;border:1px solid rgba(140,220,180,.45);border-radius:5px;cursor:pointer}.identity-face-attach-btn:hover{background:#37966efa}.identity-face-attach-btn:disabled{opacity:.45;cursor:not-allowed}.orphan-suggest-tile-wrap .orphan-suggest-local-ban{position:absolute;top:5px;right:5px;z-index:5;width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:#303038d1;color:#a0a0acf5;cursor:pointer;opacity:0;transition:opacity .12s ease;box-shadow:0 1px 4px #00000059}.orphan-suggest-tile-wrap:hover .orphan-suggest-local-ban,.orphan-suggest-tile-wrap--local-excluded .orphan-suggest-local-ban{opacity:1}.orphan-suggest-local-ban:hover{color:#d2d2dc;background:#3e3e4aeb}.orphan-suggest-tile-wrap--local-excluded .unmatched-face-tile.identity-face-tile{opacity:.14;cursor:pointer}.orphan-suggest-tile-wrap--fading-attached{pointer-events:none;opacity:0;transition:opacity .35s ease}.face-context-menu{min-width:160px;padding:4px 0;border-radius:8px;border:1px solid rgba(120,120,160,.45);background:#161620fa;box-shadow:0 12px 40px #00000073}.face-context-menu-item{display:block;width:100%;margin:0;padding:8px 14px;font:inherit;font-size:.85rem;text-align:left;color:#e8e8ec;background:none;border:none;cursor:pointer}.face-context-menu-item:hover{background:#78a0ff33}.unmatched-face-thumb{display:block;width:100%;height:100%;object-fit:cover}.people-pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px;flex-wrap:wrap}.people-pagination-meta{font-size:.85rem}.timeline-shell{display:flex;gap:20px;align-items:flex-start}.timeline{display:flex;flex-direction:column;gap:20px;flex:1;min-width:0}.timeline-sidebar{width:140px;position:sticky;top:calc(var(--topbar-measured-height, var(--sticky-topbar-offset)) + 12px);height:calc(100vh - var(--topbar-measured-height, var(--sticky-topbar-offset)) - 24px);display:flex;justify-content:flex-end}.timeline-scale{display:flex;flex-direction:column;gap:6px;width:100%;padding:6px 0;overflow-y:auto}.timeline-scale-row{display:flex;align-items:center;gap:8px;height:8px;position:relative}.timeline-scale-year{width:38px;font-size:.75rem;color:#9fa2b2;letter-spacing:.08em;font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,Monaco,Consolas,monospace}.timeline-scale-year-spacer{visibility:hidden}.timeline-scale-month{display:flex;align-items:center;gap:8px;flex:1;padding:4px;border-radius:999px;border:none;background:transparent;color:inherit;cursor:pointer;text-align:left}.timeline-scale-month:hover{background:#181824b3}.timeline-scale-month:focus-visible{outline:1px solid rgba(122,122,255,.7);outline-offset:2px}.timeline-scale-month-label{width:34px;font-size:.7rem;color:#c7c9d8;opacity:0;transform:translate(-4px);transition:opacity .16s ease,transform .16s ease;font-variant-numeric:tabular-nums;position:absolute;right:0}.timeline-scale-month:hover .timeline-scale-month-label,.timeline-scale-month:focus-visible .timeline-scale-month-label{opacity:1;transform:translate(0)}.timeline-scale-bar{height:2px;border-radius:999px;background:#7a7affb3;box-shadow:0 0 6px #7a7aff4d}.timeline-group h3{margin:0 0 8px;font-size:.95rem;color:#b9bbcc;letter-spacing:.08em;text-transform:uppercase}.date-heading{position:sticky;top:var(--topbar-measured-height, var(--sticky-topbar-offset));z-index:10;padding:4px 0 6px;background:#0b0b0fbf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,Monaco,Consolas,monospace}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:2px;align-content:start}.tile{margin:0;border-radius:8px;overflow:hidden;background:#141420cc;position:relative;z-index:1}.tile:before{content:"";display:block;padding-top:100%}.tile img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block;border-radius:8px}.tile-play{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none}.tile-play svg{width:36px;height:36px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.35))}.tile-location-hit{position:absolute;right:6px;bottom:6px;width:16px;height:16px;display:grid;place-items:center;color:#f2f7ff9e;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35));pointer-events:none}.tile-location-hit svg{width:16px;height:16px}.hover-preview{position:fixed;left:var(--anchor-x);top:var(--anchor-y);pointer-events:none;z-index:999;transform:translate(-50%,-50%) scale(.6);transform-origin:center;animation:pop-preview .16s ease-out forwards}.hover-preview img{max-width:min(60vw,520px);max-height:min(60vh,520px);width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 20px 50px #00000080;border:1px solid rgba(120,120,160,.3);background:#12121ce6}.hover-preview video{max-width:min(60vw,520px);max-height:min(60vh,520px);width:auto;height:auto;border-radius:12px;box-shadow:0 20px 50px #00000080;border:1px solid rgba(120,120,160,.3);background:#12121ce6}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;background:#050508eb;z-index:1000;display:grid;place-items:center;touch-action:none}.viewer-content{max-width:100vw;max-height:100vh;display:grid;place-items:center;position:relative}.viewer img{max-width:100vw;max-height:100vh;object-fit:contain;display:block}.viewer-photo-transform{position:relative;display:inline-block;max-width:100vw;max-height:100vh;transition:transform .12s ease;will-change:transform;transform-origin:0 0}.viewer-motion-video{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.viewer-motion-toggle{position:absolute;left:50%;bottom:max(40px,calc(env(safe-area-inset-bottom,0px) + 28px));transform:translate(-50%);z-index:3;padding:6px 14px;font-size:.8rem;letter-spacing:.04em;color:#f8fafff2;background:#161824b8;border:1px solid rgba(140,150,190,.35);border-radius:999px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;pointer-events:auto}.viewer-motion-toggle:hover{background:#24283ae0}.viewer-motion-toggle:disabled{opacity:.45;cursor:default}.viewer-motion-toggle:disabled:hover{background:#161824b8}.viewer-photo{max-width:100vw;max-height:100vh;cursor:grab;touch-action:none;position:relative}.viewer-photo.is-dragging .viewer-photo-transform{transition:none}.viewer-photo:active{cursor:grabbing}.viewer-face-box .viewer-face-name{color:#fff;text-shadow:0 0 2px #000,0 1px 3px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.viewer-new-identity-panel{position:absolute;left:50%;bottom:max(16px,env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:5;display:flex;flex-direction:column;align-items:stretch;gap:10px;min-width:min(320px,calc(100vw - 32px));padding:14px 16px;border-radius:10px;background:#18181ceb;border:1px solid rgba(255,255,255,.12);box-shadow:0 8px 32px #00000073}.viewer-new-identity-thumb{width:72px;height:72px;border-radius:8px;object-fit:cover;align-self:center}.viewer-new-identity-title{margin:0;font-size:.95rem;font-weight:600;text-align:center;color:#eee}.viewer-new-identity-input{width:100%}.viewer-identity-suggest-list{list-style:none;margin:0;padding:0;max-height:min(220px,40vh);overflow-y:auto;border-radius:8px;border:1px solid rgba(120,120,160,.35);background:#00000040}.viewer-identity-suggest-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;margin:0;padding:8px 10px;text-align:left;font:inherit;color:#eaeaf0;background:transparent;border:none;border-bottom:1px solid rgba(120,120,160,.2);cursor:pointer}.viewer-identity-suggest-list li:last-child .viewer-identity-suggest-item{border-bottom:none}.viewer-identity-suggest-item:hover:not(:disabled){background:#78a0ff1f}.viewer-identity-suggest-item.is-highlighted{background:#78b4ff38;box-shadow:inset 0 0 0 1px #8ef3ff59}.viewer-identity-suggest-item.is-highlighted:hover:not(:disabled){background:#78b4ff47}.viewer-identity-suggest-item:disabled{opacity:.5;cursor:not-allowed}.viewer-identity-suggest-name{font-size:.9rem;font-weight:600}.viewer-identity-suggest-meta{font-size:.72rem}.viewer-new-identity-actions{display:flex;gap:8px;justify-content:center}.viewer-video video{width:100%;height:100%;object-fit:cover;border-radius:0;background:#000}.viewer-video{width:100vw;height:100vh;position:relative}.viewer-controls{position:absolute;bottom:24px;left:50%;transform:translate(-50%);width:min(640px,80vw);opacity:0;transition:opacity .16s ease}.viewer-controls.show{opacity:1}.viewer-exif-strip{display:contents}.viewer-exif{position:absolute;bottom:4px;font-size:.75rem;color:#e0e1ea;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:4px 10px;border-radius:999px;background:#08080c66;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:46vw}.viewer-exif-left{left:16px;text-align:left}.viewer-exif-right{right:16px;text-align:right}.progress-bar{height:6px;border-radius:999px;background:#fff3;overflow:hidden;cursor:pointer}.progress-bar-fill{height:100%;background:#ffffffd9;width:0%}@keyframes pop-preview{0%{transform:translate(-50%,-50%) scale(.6);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.tile-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#9ea1b5;font-size:.8rem}.tile-skeleton{aspect-ratio:1 / 1;border-radius:8px;background:#18182480;border:1px solid rgba(80,80,120,.2)}.timeline-actions{margin-top:24px;display:flex;gap:12px;flex-wrap:wrap}.search-loading{margin:10px 0 28px 36px;display:inline-flex;align-items:center;gap:10px}.search-loading-dots{display:inline-flex;align-items:center;gap:5px}.search-loading-dots>span{width:6px;height:6px;border-radius:999px;background:currentColor;opacity:.3;animation:search-loading-dot-pulse .9s ease-in-out infinite}.search-loading-dots>span:nth-child(2){animation-delay:.15s}.search-loading-dots>span:nth-child(3){animation-delay:.3s}@keyframes search-loading-dot-pulse{0%,80%,to{opacity:.28;transform:scale(.75)}40%{opacity:.95;transform:scale(1)}}.load-sentinel{font-size:.85rem}.button{border:none;border-radius:999px;padding:10px 20px;font-size:.9rem;font-weight:600;color:#0b0b0f;background:linear-gradient(120deg,#7a7aff,#8ef3ff);cursor:pointer}.button.ghost{background:#181824b3;color:#e8e8ec;border:1px solid rgba(120,120,160,.3)}.button:disabled{opacity:.5;cursor:not-allowed}.list ul{margin:8px 0 0;padding-left:20px;color:#c7c9d8}.root-item{display:flex;align-items:center;justify-content:space-between;gap:12px}.root-editor{display:flex;gap:8px;margin-top:12px}.device-editor{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-top:12px}.root-input{flex:1;border-radius:999px;border:1px solid rgba(120,120,160,.3);background:#12121ce6;color:#e8e8ec;padding:8px 12px;font-size:.85rem}.icon-button.ghost{background:transparent;border-color:#7878a04d}.scan-actions{display:flex;flex-direction:column;gap:12px;margin-top:16px}.scan-status{display:flex;gap:16px;flex-wrap:wrap;color:#d0d2de}.photo-desc-actions{display:flex;gap:8px;flex-wrap:wrap}.photo-desc-progress{width:100%;height:8px;border-radius:999px;overflow:hidden;background:#ffffff24;border:1px solid rgba(255,255,255,.08)}.photo-desc-progress-fill{height:100%;width:0%;background:linear-gradient(90deg,#7a7aff,#8ef3ff);transition:width .22s ease}.photo-desc-progress-text{margin:0;font-variant-numeric:tabular-nums}.status{display:flex;align-items:center;gap:12px;font-size:1.1rem}.dot{width:10px;height:10px;border-radius:999px;background:#5df48b;box-shadow:0 0 8px #5df48bcc}.muted{color:#9fa2b2}.error{color:#ff6a7a}.tools-dialog{width:min(520px,92vw);max-height:90vh;display:flex;flex-direction:column;border:1px solid rgba(120,120,160,.4);border-radius:16px;padding:0;background:#12121cf2;color:#e8e8ec}.tools-dialog::backdrop{background:#050508b3}.tools-dialog-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:20px 20px 12px;border-bottom:1px solid rgba(120,120,160,.2)}.tools-dialog-body{flex:1;overflow-y:auto;padding:12px 20px 20px}.tools-dialog h2{margin:0;font-size:1.1rem}.jump-confirm{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#050508b3;z-index:900;padding:16px}.jump-confirm-card{width:min(420px,92vw);border-radius:16px;border:1px solid rgba(120,120,160,.35);background:#12121cf2;padding:20px;box-shadow:0 20px 50px #00000073}.jump-confirm-card h3{margin:0 0 8px;font-size:1rem}.jump-confirm-card p{margin:0 0 16px;color:#b9bbcc}.jump-confirm-date{font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,Monaco,Consolas,monospace;color:#e8e8ec}.jump-confirm-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.match-more-threshold-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.match-more-threshold-field label{font-size:.85rem;color:#c7c9d8}.match-more-threshold-field .root-input{max-width:140px;font-variant-numeric:tabular-nums}.tools-section{margin-top:16px;padding-top:12px;border-top:1px solid rgba(120,120,160,.2)}.tools-section h3{margin:0 0 8px;font-size:.9rem;text-transform:uppercase;letter-spacing:.12em;color:#b3b5c7}.tools-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.tools-section-head h3{margin:0}.tools-section-hint{margin:-4px 0 12px;font-size:.8rem;line-height:1.35}.tools-face-progress{display:flex;flex-direction:column;gap:14px}.tools-face-progress-row{display:flex;flex-direction:column;gap:6px}.tools-face-progress-label{margin:0;font-size:.8rem}.photo-desc-progress-fill.tools-face-progress-fill--match{background:linear-gradient(90deg,#9a7aff,#6ee7b7)}.tools-face-current-path{margin:0;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.face-identities-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:4px}.face-identities-list-head .muted{margin:0}.face-identities-list-head .face-merge-mode-btn{flex-shrink:0;padding:2px 8px;font-size:.75rem;margin-left:auto}.face-identities-list-head .face-merge-mode-btn.active{color:#ffc864f2}.face-identities-wrap{position:relative}.face-identities-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-auto-flow:row dense;gap:12px;margin-top:8px}.face-identity-expanded-row{grid-column:1 / -1;min-width:0;margin-top:4px;margin-bottom:20px}.people-orphan-suggest-block{margin-top:18px;padding-top:14px;border-top:1px solid rgba(120,120,160,.22)}.face-identity-card{position:relative;display:flex;flex-direction:column;align-items:center;border-radius:10px;border:1px solid rgba(120,120,160,.25);padding:6px;background:#ffffff08}.face-identity-card.selected{border-color:#ffc86499;background:#ffc86414}.face-identity-card.expanded{border-color:#78b4ff8c;background:#78a0ff0f}.face-identity-checkbox{position:absolute;top:8px;left:8px;z-index:1}.face-identity-thumb-wrap{display:block;width:100%;aspect-ratio:1;border-radius:8px;overflow:hidden;cursor:pointer;flex-shrink:0}button.face-identity-thumb-wrap{font:inherit;padding:0;border:none;background:none;text-align:inherit}.face-identity-thumb{width:100%;height:100%;object-fit:cover;display:block}.face-identity-info{width:100%;margin-top:6px;text-align:center}.face-identity-name-row{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:6px;width:100%;min-width:0}.face-identity-category-unknown{display:inline-block;margin-bottom:4px;padding:1px 6px;font-size:.65rem;font-weight:600;letter-spacing:.04em;color:#b8c0d8;background:#7882aa59;border-radius:4px}.face-identity-name{display:block;margin:0;padding:2px 4px;font:inherit;font-size:.8rem;color:#e8e8ec;background:none;border:none;border-radius:4px;cursor:pointer;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto;max-width:calc(100% - 4.5rem)}.face-identity-name-row .face-identity-name{width:auto}.face-identity-name:hover{background:#ffffff14}.face-identity-name-input{min-width:0;flex:0 1 auto;width:auto;max-width:calc(100% - 4.5rem);font-size:.8rem;padding:2px 4px;text-align:center;box-sizing:border-box}.timeline-rail-toggle,.timeline-rail-scrim{display:none}@media (max-width: 900px){.timeline-shell{gap:10px}.timeline-sidebar{width:88px;flex-shrink:0}.timeline-scale-year{width:30px;font-size:.7rem}.grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}@media (max-width: 640px){:root{--topbar-height: 52px}.topbar{flex-wrap:nowrap;gap:8px;align-items:center;padding-bottom:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.topbar::-webkit-scrollbar{display:none}.topbar-left{flex:1 1 auto;min-width:0;gap:8px}.brand{display:none}.topbar-actions{flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;justify-content:flex-end;gap:6px}.icon-button,.filter-button{min-height:44px;padding:10px 14px;touch-action:manipulation}.filter-button{font-size:.82rem;white-space:nowrap}.viewer-exif-strip{display:flex;flex-direction:column;align-items:stretch;gap:6px;position:absolute;left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));bottom:max(6px,env(safe-area-inset-bottom,0px));z-index:2;pointer-events:none}.viewer-exif-strip .viewer-exif{position:relative;left:auto;right:auto;max-width:none;align-self:stretch;white-space:normal;text-align:left;overflow:visible;text-overflow:clip;border-radius:10px}.topbar-left .search .icon-button:first-of-type{min-width:44px;padding-left:12px;padding-right:12px}.timeline-shell{display:block;gap:0}.timeline-shell .timeline{width:100%}.timeline-rail-toggle{display:inline-flex;align-items:center}.timeline-rail-scrim{display:block;position:fixed;left:0;right:0;top:var(--topbar-measured-height, var(--sticky-topbar-offset));bottom:0;width:100%;margin:0;padding:0;border:none;background:#00000052;z-index:14;cursor:pointer;-webkit-tap-highlight-color:transparent;animation:timeline-rail-scrim-in .22s ease-out}@keyframes timeline-rail-scrim-in{0%{opacity:0}to{opacity:1}}.timeline-sidebar{position:fixed;right:0;top:calc(var(--topbar-measured-height, var(--sticky-topbar-offset)) + 8px);height:calc(100dvh - var(--topbar-measured-height, var(--sticky-topbar-offset)) - 16px);width:52px;min-width:52px;z-index:15;margin:0;display:flex;justify-content:flex-end;background:#0e0e16f7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-left:1px solid rgba(120,120,160,.38);box-shadow:-8px 0 28px #0000006b;transform:translate3d(100%,0,0);opacity:0;pointer-events:none;transition:transform .24s cubic-bezier(.32,.72,0,1),opacity .2s ease;will-change:transform}.timeline-shell--rail-open .timeline-sidebar{transform:translateZ(0);opacity:1;pointer-events:auto}.timeline-scale{gap:4px;padding:4px 0}.timeline-scale-row{height:auto;min-height:10px;gap:4px}.timeline-scale-year{width:24px;font-size:.62rem;line-height:1.1;text-align:right}.timeline-scale-month{display:flex;align-items:center;min-height:32px;padding:6px 2px;border-radius:8px}.timeline-scale-month-label{display:none}.timeline-scale-bar{flex:0 0 auto;align-self:center;min-width:0;max-width:100%;height:3px;background:#9698ffeb;box-shadow:0 0 8px #8284ff73}.date-heading{font-size:.92rem;font-weight:600;padding:8px 0;letter-spacing:.04em}.grid{grid-template-columns:repeat(auto-fill,minmax(min(104px,31vw),1fr));gap:3px}.tile,.tile img{border-radius:6px}.tile-play svg{width:42px;height:42px}.device-filter-menu{left:auto;right:0;max-width:min(320px,calc(100vw - 24px))}.device-filter-item{min-height:44px;padding:12px}}.face-identity-meta{flex-shrink:0;font-size:.7rem;margin-top:0;white-space:nowrap}
