html.theme-colorful{--bg: linear-gradient(160deg, #ede9fe 0%, #fce7f3 50%, #e0f2fe 100%);--nav-bg: linear-gradient(90deg, #7c3aed 0%, #db2777 100%);--nav-shadow: none;--nav-text: #fff;--nav-link: rgba(255,255,255,.75);--nav-link-hover-bg: rgba(255,255,255,.18);--nav-active-bg: rgba(255,255,255,.25);--nav-active-color: #fff;--card-bg: #fff;--card-shadow: 0 4px 20px rgba(124,58,237,.13);--border: #e9d5ff;--text: #1a1a2e;--muted: #9333ea;--btn-bg: #7c3aed;--btn-hover: #6d28d9;--btn-outline-color: #7c3aed;--input-bg: #fff;--input-border: #d8b4fe;--input-focus: #7c3aed;--drop-bg: rgba(255,255,255,.88);--drop-border: #c4b5fd;--drop-over-bg: #ede9fe;--drop-over-border: #7c3aed;--stat-bg: #faf5ff;--log-bg: rgba(255,255,255,.75);--sidebar-bg: rgba(255,255,255,.97);--sidebar-border: #e9d5ff;--item-hover: #faf5ff;--item-active: #f3e8ff;--item-active-text: #7c3aed;--mosaic-gap: #e9d5ff;--named-color: #059669;--named-border: #10b981;--spinner-top: #7c3aed;--empty-color: #c4b5fd}html.theme-light{--bg: #f0f2f5;--nav-bg: #fff;--nav-shadow: 0 1px 0 #e5e7eb;--nav-text: #1a1a1a;--nav-link: #555;--nav-link-hover-bg: #f3f4f6;--nav-active-bg: #ededff;--nav-active-color: #4a4aff;--card-bg: #fff;--card-shadow: 0 1px 4px rgba(0,0,0,.06);--border: #e5e7eb;--text: #1a1a1a;--muted: #888;--btn-bg: #4a4aff;--btn-hover: #3333dd;--btn-outline-color: #4a4aff;--input-bg: #fff;--input-border: #ddd;--input-focus: #4a4aff;--drop-bg: #fff;--drop-border: #aab;--drop-over-bg: #ededff;--drop-over-border: #4a4aff;--stat-bg: #f8f8ff;--log-bg: #f8f8f8;--sidebar-bg: #fff;--sidebar-border: #e5e7eb;--item-hover: #f3f4f6;--item-active: #ededff;--item-active-text: #4a4aff;--mosaic-gap: #eee;--named-color: #10b981;--named-border: #10b981;--spinner-top: #4a4aff;--empty-color: #aaa}html.theme-dark{--bg: #0f172a;--nav-bg: #1e293b;--nav-shadow: none;--nav-text: #f1f5f9;--nav-link: #94a3b8;--nav-link-hover-bg: #334155;--nav-active-bg: rgba(99,102,241,.2);--nav-active-color: #818cf8;--card-bg: #1e293b;--card-shadow: 0 1px 6px rgba(0,0,0,.35);--border: #334155;--text: #f1f5f9;--muted: #94a3b8;--btn-bg: #6366f1;--btn-hover: #4f46e5;--btn-outline-color: #818cf8;--input-bg: #0f172a;--input-border: #475569;--input-focus: #6366f1;--drop-bg: #1e293b;--drop-border: #475569;--drop-over-bg: #1e2d4a;--drop-over-border: #6366f1;--stat-bg: #0f172a;--log-bg: #0f172a;--sidebar-bg: #1e293b;--sidebar-border: #334155;--item-hover: #334155;--item-active: rgba(99,102,241,.15);--item-active-text: #818cf8;--mosaic-gap: #334155;--named-color: #34d399;--named-border: #34d399;--spinner-top: #6366f1;--empty-color: #475569}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);background-attachment:fixed;color:var(--text);transition:background .25s,color .25s}.topnav{display:flex;align-items:center;gap:1.5rem;padding:0 2rem;height:52px;background:var(--nav-bg);color:var(--nav-text);box-shadow:var(--nav-shadow);position:sticky;top:0;z-index:100}.topnav .brand{font-weight:700;font-size:1.1rem;color:var(--nav-text);text-decoration:none;background:#ffffff2e;padding:.3rem .85rem;border-radius:8px;word-spacing:-.1em}.topnav .brand:hover{background:#ffffff47;color:var(--nav-text)}.topnav .brand.active{background:#ffffff2e;color:var(--nav-text)}.topnav a{color:var(--nav-link);text-decoration:none;font-size:.95rem;padding:4px 10px;border-radius:6px;transition:background .15s,color .15s}.topnav a:hover{background:var(--nav-link-hover-bg);color:var(--nav-active-color)}.topnav a.active{background:var(--nav-active-bg);color:var(--nav-active-color);font-weight:600}.theme-selector{display:flex;align-items:center;background:#00000059;border-radius:999px;padding:4px;gap:2px}.theme-btn{width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;color:#ffffff8c;transition:background .2s,color .2s}.theme-btn:hover{color:#ffffffe6}.theme-btn.active{background:#1d9bf0;color:#fff}html.theme-light .theme-selector{background:#0000001f}html.theme-light .theme-btn{color:#00000073}html.theme-light .theme-btn:hover{color:#000c}html.theme-light .theme-btn.active{background:#1d9bf0;color:#fff}.activity-dropdown{position:absolute;top:calc(100% + 8px);right:0;z-index:1100;min-width:240px;background:var(--card-bg, #1e1e1e);border:1px solid var(--border, #333);border-radius:10px;box-shadow:0 8px 24px #00000040;overflow:hidden}.activity-dropdown-title{padding:.6rem .9rem;font-weight:600;font-size:.82rem;color:var(--text-muted, #999);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border, #333)}.activity-items{padding:.35rem 0}.activity-row{display:flex;align-items:center;gap:.6rem;padding:.5rem .9rem}.activity-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.activity-icon.done{color:#16a34a}.activity-icon.busy{color:#d97706}.activity-label{font-size:.88rem;font-weight:500}.activity-label.done{color:var(--text-muted, #999)}.activity-label.busy{color:var(--text, #eee)}.activity-counts{font-size:.78rem;color:var(--text-muted, #999);margin-top:1px}.page{flex:1;overflow-y:auto;height:calc(100vh - 52px)}.upload-page{max-width:min(800px,calc(100vw - 260px));margin:0 auto;padding:2rem 1rem}.upload-page h1{font-size:1.5rem;margin-bottom:1.5rem}.drop-zone{border:2px dashed var(--drop-border);border-radius:12px;padding:3rem 2rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--drop-bg)}.drop-zone.over{border-color:var(--drop-over-border);background:var(--drop-over-bg)}.drop-zone p{color:var(--muted);margin-top:.5rem;font-size:.9rem}.drop-zone input{display:none}.status-card{margin-top:1.5rem;background:var(--card-bg);border-radius:10px;padding:1.25rem 1.5rem;box-shadow:var(--card-shadow);color:var(--text)}.status-card h2{font-size:1rem;margin-bottom:1rem;color:var(--muted)}.status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.stat-box{text-align:center;background:var(--stat-bg);border-radius:8px;padding:.75rem}.stat-box .num{font-size:1.6rem;font-weight:700}.stat-box .lbl{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.stat-pending .num{color:#f59e0b}.stat-processing .num{color:#3b82f6}.stat-done .num{color:#10b981}.stat-error .num{color:#ef4444}.upload-log{margin-top:1rem;max-height:140px;overflow-y:auto;background:var(--log-bg);border-radius:6px;padding:.5rem .75rem;font-size:.82rem;color:var(--muted)}.upload-log p{margin:2px 0}.btn{display:inline-block;margin-top:1.25rem;padding:.6rem 1.4rem;background:var(--btn-bg);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .15s}.btn:hover{background:var(--btn-hover)}.btn:disabled{background:#aab;cursor:default}.btn-outline{background:transparent;color:var(--btn-outline-color);border:2px solid var(--btn-outline-color);padding-top:calc(.6rem - 2px);padding-bottom:calc(.6rem - 2px)}.btn-outline:hover{background:var(--btn-bg);color:#fff;border-color:var(--btn-bg)}.btn-danger{background:#ef4444}.btn-danger:hover{background:#c22}.btn-sm{padding:.35rem .85rem;font-size:.85rem;margin-top:0}.btn-sm.btn-outline{padding-top:calc(.35rem - 2px);padding-bottom:calc(.35rem - 2px)}.review-page{max-width:1100px;margin:0 auto;padding:2rem 1rem}.review-page h1{font-size:1.5rem;margin-bottom:.5rem}.review-controls{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.review-controls .btn{margin-top:0}.hint{color:var(--muted);font-size:.88rem}.cluster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem}.cluster-card{background:var(--card-bg);border-radius:12px;box-shadow:var(--card-shadow);overflow:hidden;display:flex;flex-direction:column}.cluster-card.named{border:2px solid var(--named-border)}.face-mosaic{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;background:var(--mosaic-gap);min-height:120px}.face-tile{position:relative;aspect-ratio:1;overflow:hidden}.face-tile img{width:100%;height:100%;object-fit:cover;display:block}.face-tile:hover .face-remove-btn{opacity:1}.face-remove-btn{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:#000000a6;color:#fff;border:none;cursor:pointer;font-size:.7rem;line-height:1;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,background .15s;padding:0}.face-remove-btn:hover{background:#ef4444;opacity:1}.face-remove-btn:disabled{cursor:default}.face-tile-more .more-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;color:#fff;font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;pointer-events:none}.cluster-footer{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.cluster-footer .count{font-size:.8rem;color:var(--muted)}.cluster-footer form{display:flex;gap:.4rem;align-items:center}.cluster-footer form .btn{margin-top:0}.cluster-footer input{flex:1;padding:.4rem .6rem;border:1px solid var(--input-border);border-radius:6px;font-size:.9rem;background:var(--input-bg);color:var(--text)}.cluster-footer input:focus{outline:2px solid var(--input-focus);border-color:transparent}.cluster-footer .named-badge{display:flex;align-items:center;justify-content:space-between}.cluster-footer .named-badge span{font-weight:600;color:var(--named-color);font-size:.95rem}.albums-layout{display:flex;height:100%;overflow:hidden}.person-sidebar{width:220px;min-width:180px;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;overflow-y:auto;padding-bottom:3rem}.sidebar-divider{border:none;border-top:2.5px dotted var(--muted);margin:.5rem 1rem;opacity:.45}.person-sidebar h2{font-size:.85rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:1rem 1rem .5rem;display:flex;align-items:center;gap:.35rem}.sidebar-h2-icon{width:20px;height:20px;margin-left:.3rem;flex-shrink:0}.person-item{display:flex;align-items:center;gap:.65rem;padding:.6rem 1rem;cursor:pointer;transition:background .1s;border:none;background:none;text-align:left;width:100%;color:var(--text)}.person-item:hover{background:var(--item-hover)}.person-item.active{background:var(--item-active)}.person-item .avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--mosaic-gap);flex-shrink:0}.person-item .avatar-placeholder{width:56px;height:56px;border-radius:50%;background:var(--mosaic-gap);display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex-shrink:0}.person-item .person-info{min-width:0;flex:1}.person-item .person-name{font-size:1.05rem;font-weight:600;overflow-wrap:anywhere;word-break:break-word}.person-item.active .person-name{color:var(--item-active-text)}.person-item .person-count{font-size:.88rem;color:var(--muted)}.album-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.album-header{display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.5rem 0;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.album-header h2{font-size:1.3rem;margin:0}.album-content{flex:1;overflow-y:auto;padding:1.5rem}.album-main .album-actions{display:flex;gap:.5rem;flex-wrap:wrap}.search-ac-wrap{position:relative}.search-ac-input{width:100%;padding:.5rem .85rem;border-radius:8px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);font-size:.9rem;outline:none;box-sizing:border-box}.search-ac-input:focus{border-color:var(--input-focus);box-shadow:0 0 0 2px color-mix(in srgb,var(--input-focus) 20%,transparent)}.search-ac-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #00000026;margin:0;padding:.3rem 0;list-style:none;max-height:220px;overflow-y:auto}.search-ac-item{display:flex;align-items:center;gap:.65rem;padding:.45rem .85rem;cursor:pointer;font-size:.9rem;color:var(--text)}.search-ac-item:hover{background:var(--item-hover)}.search-ac-avatar{width:30px;height:30px;border-radius:50%;object-fit:cover;flex-shrink:0}.search-ac-avatar-ph{display:flex;align-items:center;justify-content:center;background:var(--mosaic-gap);font-size:.9rem}.search-ac-check{margin-left:auto;color:var(--btn-bg);font-weight:700}.search-person-row{display:flex;flex-wrap:wrap;gap:.5rem;padding:.25rem 0 .5rem}.search-person-card{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.45rem .6rem .5rem;border-radius:10px;border:2px solid transparent;background:none;cursor:pointer;flex-shrink:0;position:relative;transition:border-color .15s,background .15s;min-width:72px}.search-person-card:hover{background:var(--item-hover)}.search-person-card.selected{border-color:var(--btn-bg);background:var(--item-active)}.search-person-card img,.search-person-card .sp-avatar-ph{width:56px;height:56px;border-radius:50%;object-fit:cover;border:2px solid var(--border)}.search-person-card.selected img,.search-person-card.selected .sp-avatar-ph{border-color:var(--btn-bg)}.sp-avatar-ph{display:flex;align-items:center;justify-content:center;background:var(--mosaic-gap);font-size:1.4rem}.search-person-card .sp-name{font-size:.75rem;color:var(--text);max-width:72px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.search-check{position:absolute;top:2px;right:2px;width:18px;height:18px;background:var(--btn-bg);color:#fff;border-radius:50%;font-size:.65rem;font-weight:700;display:flex;align-items:center;justify-content:center}.search-mode-row{display:flex;align-items:center;gap:1.25rem;padding:.25rem 0}.search-mode-label{display:flex;align-items:center;gap:.35rem;font-size:.82rem;cursor:pointer;color:var(--muted)}.search-mode-label.active{color:var(--text);font-weight:600}.search-mode-label input{accent-color:var(--btn-bg);cursor:pointer}.search-result-counts{font-size:.82rem;color:var(--muted)}.visual-search-btn{display:flex;align-items:center;justify-content:center;gap:.45rem;width:80%;padding:.6rem 1rem;border:none;border-radius:10px;background:var(--btn-bg);color:#fff;font-size:.9rem;font-weight:600;cursor:pointer;box-shadow:0 2px 8px #0000002e;transition:filter .15s,transform .1s}.visual-search-btn:hover{filter:brightness(1.12)}.visual-search-btn.active{filter:brightness(.9);transform:scale(.98)}.album-tabs{display:flex;align-items:center;gap:2px;padding:4px;margin:.6rem 0 .35rem;background:var(--mosaic-gap);border-radius:10px;width:fit-content}.album-tab{display:flex;align-items:center;gap:.35rem;padding:.42rem 1.1rem;font-size:.875rem;font-weight:500;border:none;border-radius:7px;background:none;color:var(--muted);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.album-tab:hover:not(.active){background:#8080801f;color:var(--text)}.album-tab.active{background:var(--btn-bg);color:#fff;font-weight:600;box-shadow:0 1px 5px #00000038}.album-tab-icon{font-size:.8rem;opacity:.9}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.photo-thumb{aspect-ratio:1;overflow:hidden;border-radius:8px;cursor:pointer;position:relative;background:var(--mosaic-gap)}.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}.photo-thumb.photo-selected{outline:3px solid var(--btn-bg);outline-offset:-3px}.photo-checkbox{position:absolute;top:6px;left:6px;z-index:1;pointer-events:none}.photo-checkbox input{width:18px;height:18px;cursor:pointer;accent-color:var(--btn-bg);pointer-events:all}.photo-thumb:hover img{transform:scale(1.04)}.photo-thumb:hover .photo-remove-btn{opacity:1}.photo-remove-btn{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:50%;background:#0009;color:#fff;border:none;cursor:pointer;font-size:.8rem;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,background .15s;padding:0;z-index:1}.photo-remove-btn:hover{background:#ef4444;opacity:1}.photo-remove-btn:disabled{cursor:default}.photo-select-dot{position:absolute;top:7px;right:7px;width:20px;height:20px;border-radius:50%;border:2px solid #fff;background:#00000059;pointer-events:none;box-shadow:0 1px 3px #0006}.photo-select-dot.selected{background:var(--btn-bg);border-color:var(--btn-bg);display:flex;align-items:center;justify-content:center}.photo-select-dot.selected:after{content:"✓";color:#fff;font-size:11px;line-height:1}.cover-icon-wrap{position:absolute;top:6px;left:6px;z-index:2}.cover-icon-btn{width:26px;height:26px;border-radius:50%;background:#0000008c;color:#fff;border:none;cursor:pointer;font-size:1rem;font-weight:700;letter-spacing:.05em;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,background .15s;padding:0}.photo-thumb:hover .cover-icon-btn{opacity:1}.cover-icon-btn:hover{background:#000c}.cover-menu{position:absolute;top:30px;left:0;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #0000002e;min-width:170px;overflow:hidden}.cover-menu-item{display:block;width:100%;padding:.55rem .85rem;background:none;border:none;text-align:left;cursor:pointer;font-size:.88rem;color:var(--text);white-space:nowrap}.cover-menu-item:hover{background:var(--btn-bg);color:#fff}.cover-menu-item:disabled{cursor:default;opacity:.6}.empty-state{text-align:center;color:var(--empty-color);padding:4rem 1rem;font-size:1rem}.empty-state p{margin-top:.5rem;font-size:.9rem}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000b;z-index:200;display:flex;align-items:center;justify-content:center}.lightbox-inner{position:relative;max-width:90vw;max-height:90vh}.lightbox-inner img{max-width:90vw;max-height:90vh;border-radius:8px;display:block}.lightbox-close{position:absolute;top:-14px;right:-14px;width:32px;height:32px;border-radius:50%;background:#fff;border:none;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center}.slideshow-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000e;z-index:200;display:flex;align-items:center;justify-content:center}.slideshow-inner{position:relative;width:100vw;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center}.slideshow-img{max-width:92vw;max-height:85vh;object-fit:contain;border-radius:6px;display:block}.slideshow-close{position:absolute;top:1rem;right:1.25rem;width:36px;height:36px;border-radius:50%;background:#fff2;border:none;cursor:pointer;font-size:1.2rem;color:#fff;display:flex;align-items:center;justify-content:center;transition:background .15s}.slideshow-close:hover{background:#fff4}.slideshow-menu-wrap{position:absolute;top:1rem;left:1.25rem}.slideshow-menu-btn{width:36px;height:36px;border-radius:50%;background:#fff2;border:none;cursor:pointer;font-size:1rem;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;transition:background .15s;letter-spacing:.05em}.slideshow-menu-btn:hover{background:#fff4}.video-bottom{position:absolute;bottom:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;width:72vw}.video-seek-wrap{display:flex;align-items:center;gap:.6rem;width:100%}.video-seek-time{color:#fff;font-size:.72rem;opacity:.75;min-width:2.8rem;text-align:center;flex-shrink:0}.video-seek-track{flex:1;height:4px;background:#fff3;border-radius:2px;position:relative;cursor:pointer}.video-seek-fill{position:absolute;left:0;top:0;height:100%;background:var(--btn-bg);border-radius:2px;pointer-events:none}.video-seek-thumb{position:absolute;top:50%;transform:translate(-50%,-50%);width:13px;height:13px;background:#fff;border-radius:50%;pointer-events:none;transition:transform .1s}.video-seek-track:hover .video-seek-thumb{transform:translate(-50%,-50%) scale(1.3)}.slideshow-controls{display:flex;align-items:center;gap:.4rem;background:#000a;padding:.45rem .9rem;border-radius:999px}.sl-btn{background:none;border:none;color:#fff;cursor:pointer;padding:.3rem .45rem;border-radius:8px;line-height:0;opacity:.8;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.sl-btn:hover{opacity:1;background:#fff2}.sl-btn.active{opacity:1;background:var(--btn-bg)}.sl-btn-main{padding:.35rem .55rem}.slideshow-nav{position:absolute;top:50%;transform:translateY(-50%);background:#0006;border:2px solid #fff4;color:#fff;font-size:2.8rem;line-height:1;width:60px;height:90px;cursor:pointer;border-radius:10px;display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s;z-index:2}.slideshow-nav:hover{background:#0009;border-color:#fff8}.slideshow-prev{left:1.25rem}.slideshow-next{right:1.25rem}.slideshow-bar{position:absolute;bottom:1.5rem;display:flex;align-items:center;gap:.6rem;background:#000a;padding:.5rem 1.1rem;border-radius:999px;color:#fff;font-size:.88rem;flex-wrap:wrap;max-width:92vw}.slideshow-ctrl-btn{background:none;border:none;color:#fff;font-size:1.1rem;cursor:pointer;padding:0 .15rem;line-height:1;opacity:.85;transition:opacity .15s}.slideshow-ctrl-btn:hover{opacity:1}.slideshow-divider{width:1px;height:16px;background:#fff4;flex-shrink:0}.slideshow-counter{font-variant-numeric:tabular-nums;white-space:nowrap}.slideshow-timer-label{opacity:.7}.slideshow-timer-ctrl{display:flex;align-items:center}.slideshow-timer-step{background:#fff2;border:1px solid #fff3;color:#fff;font-size:1rem;width:26px;height:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;flex-shrink:0}.slideshow-timer-step:first-child{border-radius:4px 0 0 4px}.slideshow-timer-step:last-child{border-radius:0 4px 4px 0}.slideshow-timer-step:hover{background:#fff4}.slideshow-timer-input{width:38px;background:#fff1;border:1px solid #fff3;border-left:none;border-right:none;color:#fff;font-size:.85rem;padding:.15rem 0;text-align:center;-moz-appearance:textfield}.slideshow-timer-input::-webkit-outer-spin-button,.slideshow-timer-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.slideshow-timer-input:focus{outline:none}.slideshow-filename{opacity:.6;font-size:.78rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem .5rem}.group-members{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}.group-member-chip{display:inline-flex;align-items:center;gap:.5rem;background:var(--item-active);color:var(--item-active-text);border-radius:999px;padding:.3rem .8rem .3rem .35rem;font-size:.92rem;font-weight:500}.group-member-chip img{width:56px;height:56px;border-radius:50%;object-fit:cover}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:300;display:flex;align-items:center;justify-content:center}.modal-box{background:var(--card-bg);border-radius:14px;box-shadow:0 8px 40px #00000040;padding:1.75rem;width:380px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;overflow:hidden}.modal-title{font-size:1.1rem;font-weight:700;margin-bottom:1.25rem;color:var(--text)}.modal-label{display:block;font-size:.82rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem}.modal-input{width:100%;padding:.45rem .7rem;border:1px solid var(--input-border);border-radius:7px;font-size:.95rem;background:var(--input-bg);color:var(--text)}.modal-input:focus{outline:2px solid var(--input-focus);border-color:transparent}.modal-member-list{max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:.35rem;display:flex;flex-direction:column;gap:.15rem}.modal-member-item{display:flex;align-items:center;gap:.6rem;padding:.45rem .6rem;border-radius:6px;cursor:pointer;font-size:.92rem;transition:background .1s;-webkit-user-select:none;user-select:none}.modal-member-item:hover{background:var(--item-hover)}.modal-member-item.checked{background:var(--item-active);color:var(--item-active-text)}.modal-member-item input[type=checkbox]{width:15px;height:15px;accent-color:var(--btn-bg);cursor:pointer;flex-shrink:0}.spinner{display:inline-block;width:16px;height:16px;border:2px solid #ccc;border-top-color:var(--spinner-top);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.text-muted{color:var(--muted);font-size:.9rem}.mt1{margin-top:.5rem}.mt2{margin-top:1rem}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:1rem}.login-card{background:var(--card-bg);border:1px solid var(--border);border-radius:18px;box-shadow:var(--card-shadow);padding:2.5rem 2.25rem;width:100%;max-width:400px}.login-logo{display:flex;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:1.5rem}.login-title{font-size:1.6rem;font-weight:700;margin:0;word-spacing:-.1em}.login-subtitle{font-size:1.05rem;font-weight:600;margin:0 0 1.5rem;color:var(--text)}.login-google-btn{display:flex;align-items:center;justify-content:center;gap:.65rem;width:100%;padding:.65rem 1rem;border-radius:10px;border:1.5px solid var(--border);background:var(--card-bg);color:var(--text);font-size:.95rem;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s}.login-google-btn:hover{background:var(--item-hover);border-color:var(--input-focus)}.login-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0;color:var(--muted);font-size:.82rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border)}.login-form{display:flex;flex-direction:column;gap:.9rem}.login-field{display:flex;flex-direction:column;gap:.3rem}.login-field label{font-size:.82rem;font-weight:600;color:var(--muted)}.login-field input{padding:.55rem .85rem;border-radius:8px;border:1.5px solid var(--input-border);background:var(--input-bg);color:var(--text);font-size:.95rem;outline:none;transition:border-color .15s,box-shadow .15s}.login-field input:focus{border-color:var(--input-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--input-focus) 18%,transparent)}.login-error{background:#fee2e2;color:#dc2626;border-radius:8px;padding:.5rem .85rem;font-size:.85rem}.login-submit-btn{width:100%;padding:.65rem;border:none;border-radius:10px;background:var(--btn-bg);color:#fff;font-size:.95rem;font-weight:600;cursor:pointer;transition:filter .15s;display:flex;align-items:center;justify-content:center;gap:.5rem}.login-submit-btn:hover:not(:disabled){filter:brightness(1.1)}.login-submit-btn:disabled{opacity:.65;cursor:not-allowed}.login-toggle{text-align:center;font-size:.85rem;color:var(--muted);margin:1rem 0 0}.login-toggle button{background:none;border:none;color:var(--btn-bg);font-weight:600;cursor:pointer;padding:0;font-size:.85rem}.login-toggle button:hover{text-decoration:underline}.nav-login-btn{padding:.35rem .9rem;border-radius:8px;background:var(--btn-bg);color:#fff!important;font-size:.85rem;font-weight:600;text-decoration:none;transition:filter .15s}.nav-login-btn:hover{filter:brightness(1.12)}.user-menu{position:relative}.user-avatar-btn{width:34px;height:34px;border-radius:50%;border:2px solid var(--border);background:var(--btn-bg);cursor:pointer;padding:0;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:border-color .15s}.user-avatar-btn:hover{border-color:var(--btn-bg)}.user-avatar-img{width:100%;height:100%;object-fit:cover}.user-avatar-initials{color:#fff;font-size:.8rem;font-weight:700}.user-dropdown{position:absolute;right:0;top:calc(100% + 8px);z-index:200;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #00000026;min-width:260px;overflow:hidden}.user-dropdown-info{padding:.85rem 1rem .7rem}.user-dropdown-name{font-weight:600;font-size:.92rem;color:var(--text)}.user-dropdown-email{font-size:.78rem;color:var(--muted);margin-top:.1rem;word-break:break-all}.user-dropdown-divider{height:1px;background:var(--border)}.user-dropdown-item{display:flex;align-items:center;gap:.55rem;width:100%;padding:.65rem 1rem;border:none;background:none;color:var(--text);font-size:.88rem;cursor:pointer;text-align:left;transition:background .12s}.user-dropdown-item:hover{background:var(--item-hover)}.share-toggle-btn{display:flex;align-items:center;justify-content:center;gap:.45rem;width:80%;padding:.6rem 1rem;border:none;border-radius:10px;background:var(--btn-bg);color:#fff;font-size:.9rem;font-weight:600;cursor:pointer;box-shadow:0 2px 8px #0000002e;transition:filter .15s,transform .1s}.share-toggle-btn:hover{filter:brightness(1.12)}.share-toggle-btn.active{filter:brightness(.9);transform:scale(.98)}.person-item.share-selected{background:color-mix(in srgb,var(--btn-bg) 12%,transparent)}.share-checkbox{width:18px;height:18px;border-radius:4px;border:2px solid #888;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;flex-shrink:0;margin-right:.25rem;background:#fff;color:#fff;transition:all .12s}.share-checkbox.checked{background:var(--btn-bg);border-color:var(--btn-bg)}
