:root{color-scheme:dark;--color-bg: #0b0d12;--color-surface: #14171f;--color-surface-hover: #1c202b;--color-border: rgba(255, 255, 255, .08);--color-text: #f2f3f5;--color-text-muted: #9aa0ac;--color-accent: #6c8cff;--color-accent-soft: rgba(108, 140, 255, .14);--sidebar-width: 272px;--grid-gap: .9rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#171a22 0%,var(--color-bg) 55%);color:var(--color-text);min-height:100vh}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.layout{display:flex;min-height:100vh}.layout__content{flex:1 1 auto;min-width:0;container-type:inline-size}.sidebar{flex:0 0 var(--sidebar-width);width:var(--sidebar-width);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:1.25rem;padding:1.5rem .9rem;overflow-y:auto;background:#14171fb8;border-right:1px solid var(--color-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sidebar__brand{display:flex;align-items:center;gap:.6rem;padding:0 .6rem;font-size:1.05rem;font-weight:600;letter-spacing:-.01em}.sidebar__logo{width:30px;height:30px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-accent)}.sidebar__logo svg{width:18px;height:18px}.sidebar__nav{display:flex;flex-direction:column;gap:.2rem}.sidebar__heading{margin:1rem 0 .35rem;padding:0 .6rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.sidebar__note{margin:.25rem 0;padding:0 .6rem;font-size:.85rem;color:var(--color-text-muted)}.sidebar__list{display:flex;flex-direction:column;gap:.2rem;margin:0;padding:0;list-style:none}.sidebar__item{display:flex;align-items:center;gap:.7rem;padding:.4rem .6rem;border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:.9rem;transition:background-color .15s ease,color .15s ease}.sidebar__item:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebar__item:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.sidebar__item--active,.sidebar__item--active:hover{background:var(--color-accent-soft);color:var(--color-text)}.sidebar__thumb{flex:0 0 auto;width:32px;height:32px;border-radius:7px;object-fit:cover;background:var(--color-surface)}.sidebar__thumb--icon{display:grid;place-items:center;color:var(--color-accent)}.sidebar__thumb--icon svg{width:18px;height:18px}.sidebar__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__count{flex:0 0 auto;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.sidebar-backdrop{display:none}.page{max-width:1600px;margin:0 auto;padding:2rem 2.5rem 4rem}.page__header{display:flex;align-items:center;gap:.9rem;margin-bottom:2rem}.page__heading{display:flex;flex-direction:column;gap:.35rem;min-width:0}.page__title{font-size:1.75rem;font-weight:650;letter-spacing:-.02em;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page__menu-button{display:none;flex:0 0 auto;width:42px;height:42px;place-items:center;padding:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer}.page__menu-button svg{width:20px;height:20px}.page__section{margin-bottom:2.5rem}.page__section-title{display:flex;align-items:baseline;gap:.5rem;margin:0 0 1rem;font-size:.95rem;font-weight:600}.page__section-count{font-size:.8rem;font-weight:500;color:var(--color-text-muted)}@media (max-width: 860px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:60;width:min(var(--sidebar-width),85vw);background:#14171ff5;transform:translate(-100%);transition:transform .22s ease}.sidebar--open{transform:translate(0);box-shadow:0 0 48px #00000080}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#00000080;opacity:0;pointer-events:none;transition:opacity .22s ease}.sidebar-backdrop--visible{opacity:1;pointer-events:auto}.page{padding:1.25rem 1rem 3rem}.page__menu-button{display:grid}.page__title{font-size:1.4rem}}@media (prefers-reduced-motion: reduce){.sidebar,.sidebar-backdrop{transition:none}}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.9rem;color:var(--color-text-muted)}.breadcrumbs__link{transition:color .15s ease}.breadcrumbs__link:hover{color:var(--color-accent)}.breadcrumbs__segment{display:inline-flex;align-items:center;gap:.35rem}.breadcrumbs__separator{opacity:.5}.breadcrumbs__current{color:var(--color-text);font-weight:500}.folder-grid,.photo-grid{display:flex;flex-wrap:wrap;gap:var(--grid-gap)}.folder-grid>*,.photo-grid>*{flex:0 0 calc((100% - (var(--columns) - 1) * var(--grid-gap)) / var(--columns));min-width:0}.folder-grid{--columns: 1}.photo-grid{--columns: 2;--grid-gap: .6rem}@container (min-width: 420px){.folder-grid{--columns: 2}.photo-grid{--columns: 3}}@container (min-width: 720px){.folder-grid{--columns: 3}.photo-grid{--columns: 4}}@container (min-width: 1000px){.folder-grid{--columns: 4}.photo-grid{--columns: 5}}@container (min-width: 1300px){.folder-grid{--columns: 5}.photo-grid{--columns: 6}}.folder-card{display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.folder-card__shared{position:absolute;top:8px;right:8px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#0009;color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.folder-card__shared svg{width:16px;height:16px}.folder-card:hover{transform:translateY(-3px);border-color:#ffffff29;box-shadow:0 4px 8px #00000073,0 18px 36px #0006}.folder-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.folder-card__mosaic{display:flex;gap:2px;aspect-ratio:4 / 3;overflow:hidden;background:var(--color-bg)}.folder-card__mosaic-column{display:flex;flex-direction:column;gap:2px;flex:1 1 0;min-width:0}.folder-card__mosaic--3 .folder-card__mosaic-column:first-child{flex-grow:2}.folder-card__mosaic-image{flex:1 1 0;min-height:0;width:100%;object-fit:cover;display:block;transition:transform .35s ease}.folder-card:hover .folder-card__mosaic-image{transform:scale(1.04)}.folder-card__mosaic--empty{align-items:center;justify-content:center;color:var(--color-accent);background:linear-gradient(135deg,var(--color-surface-hover),var(--color-surface))}.folder-card__mosaic--empty svg{width:44px;height:44px;opacity:.8}.folder-card__info{display:flex;flex-direction:column;gap:.15rem;padding:.75rem .9rem .85rem;min-width:0}.folder-card__name{font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-card__count{font-size:.78rem;color:var(--color-text-muted)}@media (prefers-reduced-motion: reduce){.folder-card,.folder-card__mosaic-image{transition:none}.folder-card:hover,.folder-card:hover .folder-card__mosaic-image{transform:none}}.photo-card{position:relative;aspect-ratio:1;padding:0;border:none;border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface);cursor:pointer;box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease}.photo-card:hover{transform:scale(1.02);box-shadow:0 4px 8px #00000073,0 16px 32px #0006}.photo-card__image{width:100%;height:100%;object-fit:cover;display:block}.photo-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:flex-end;gap:.1rem;padding:.6rem .7rem;background:linear-gradient(to top,#000000bf,#0000 55%);opacity:0;transition:opacity .15s ease;text-align:left}.photo-card:hover .photo-card__overlay,.photo-card:focus-visible .photo-card__overlay{opacity:1}.photo-card__title{font-size:.82rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-card__date{font-size:.72rem;color:var(--color-text-muted)}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:5vh 7vw;background:#06070aeb;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);animation:viewer-fade-in .15s ease}@keyframes viewer-fade-in{0%{opacity:0}to{opacity:1}}.viewer__image{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:var(--radius-lg);box-shadow:0 24px 64px #0009}.viewer__toolbar{position:absolute;top:1.5rem;right:1.5rem;z-index:2;display:flex;gap:.6rem}.viewer__button{width:44px;height:44px;display:grid;place-items:center;padding:0;background:#ffffff0f;border:1px solid var(--color-border);border-radius:50%;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.viewer__button:hover{background:#ffffff24}.viewer__button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.viewer__button--active,.viewer__button--active:hover{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.viewer__button svg{width:20px;height:20px}.viewer__button--small{width:36px;height:36px}.viewer__button--small svg{width:16px;height:16px}.info-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:110;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#00000073;animation:viewer-fade-in .15s ease}.info-modal__panel{display:flex;flex-direction:column;width:min(560px,100%);max-height:min(85vh,900px);background:#14171ff7;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 24px 64px #0009;overflow:hidden}.info-modal__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1rem 1rem 1.4rem;border-bottom:1px solid var(--color-border)}.info-modal__title{margin:0;font-size:1.05rem;font-weight:600}.info-modal__body{display:flex;flex-direction:column;gap:1.4rem;padding:1.2rem 1.4rem 1.6rem;overflow-y:auto;overscroll-behavior:contain}.info-modal__section-title{margin:0 0 .5rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent)}.info-modal__fields{display:flex;flex-direction:column;margin:0}.info-modal__field{display:flex;flex-wrap:wrap;gap:.15rem 1rem;padding:.45rem 0;border-bottom:1px solid var(--color-border);font-size:.86rem}.info-modal__field:last-child{border-bottom:none}.info-modal__field dt{flex:0 0 9.5rem;color:var(--color-text-muted)}.info-modal__field dd{flex:1 1 12rem;min-width:0;margin:0;overflow-wrap:anywhere}.info-modal__all summary{cursor:pointer;list-style-position:inside}.info-modal__all[open] summary{margin-bottom:.5rem}.info-modal__link{display:inline-block;margin-top:.5rem;font-size:.85rem;color:var(--color-accent)}.info-modal__link:hover{text-decoration:underline}.info-modal__message{margin:0;color:var(--color-text-muted);font-size:.9rem}.info-modal__message--error{color:#ff8080}@media (max-width: 600px){.info-modal{align-items:flex-end;padding:0}.info-modal__panel{width:100%;max-height:80vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.viewer__toolbar{top:1rem;right:1rem}}.viewer__nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;display:grid;place-items:center;background:#ffffff0f;border:1px solid var(--color-border);border-radius:50%;cursor:pointer;transition:background-color .15s ease,opacity .15s ease}.viewer__nav:hover:not(:disabled){background:#ffffff24}.viewer__nav:disabled{opacity:.25;cursor:default}.viewer__nav svg{width:24px;height:24px}.viewer__nav--previous{left:1.5rem}.viewer__nav--next{right:1.5rem}.viewer__caption{position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%);padding:.4rem 1rem;background:#ffffff0f;border:1px solid var(--color-border);border-radius:999px;font-size:.85rem;color:var(--color-text-muted)}.state-message{padding:4rem 0;text-align:center;color:var(--color-text-muted)}.state-message--error{color:#ff8080}.day-group+.day-group{margin-top:1.75rem}.day-group__heading{display:flex;align-items:baseline;gap:.6rem;margin:0 0 .75rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border);font-size:.85rem;font-weight:600;scroll-margin-top:1rem}.date-rail{position:fixed;top:0;right:0;bottom:0;width:14px;z-index:10;pointer-events:none}.date-rail__position{position:absolute;right:0;width:14px;height:2px;background:var(--color-accent);opacity:.6}.date-rail__tick{position:absolute;right:0;width:14px;height:10px;margin-top:-5px;padding:0;border:none;background:none;cursor:pointer;pointer-events:auto}.date-rail__tick:before{content:"";position:absolute;top:4px;right:0;width:8px;height:2px;border-radius:1px;background:var(--color-text-muted);transition:width .12s ease,background .12s ease}.date-rail__tick--active:before,.date-rail__tick:hover:before,.date-rail__tick:focus-visible:before{width:14px;background:var(--color-accent)}.date-rail__label{position:absolute;top:50%;right:20px;transform:translateY(-50%);padding:.25rem .5rem;border-radius:var(--radius-sm);background:var(--color-surface-hover);box-shadow:var(--shadow-card);font-size:.75rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease}.date-rail__tick:hover .date-rail__label,.date-rail__tick:focus-visible .date-rail__label{opacity:1}.button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .9rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.85rem;font-weight:500;white-space:nowrap;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.button:hover:not(:disabled){background:var(--color-surface-hover);border-color:#ffffff29}.button:focus-visible,.input:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.button:disabled{opacity:.5;cursor:default}.button--primary{background:var(--color-accent);border-color:var(--color-accent);color:#0b0d12}.button--primary:hover:not(:disabled){background:#8aa4ff;border-color:#8aa4ff}.button--danger{color:#ff8080}.button--danger:hover:not(:disabled){background:#ff80801f;border-color:#ff808066}.input{padding:.5rem .75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font:inherit;font-size:.9rem;color:var(--color-text)}.auth-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.auth-card{display:flex;flex-direction:column;align-items:center;gap:.9rem;width:min(420px,100%);padding:2.25rem 2rem;text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.auth-card__logo{width:44px;height:44px}.auth-card__logo svg{width:26px;height:26px}.auth-card__title{margin:0;font-size:1.4rem;letter-spacing:-.02em}.auth-card__blurb{margin:0;color:var(--color-text-muted);line-height:1.5}.auth-card__error{margin:0;padding:.6rem .8rem;width:100%;background:#ff80801a;border:1px solid rgba(255,128,128,.3);border-radius:var(--radius-md);color:#ff9a9a;font-size:.88rem}.auth-card__action{margin-top:.5rem;padding:.7rem 1.2rem;font-size:.95rem}.sidebar__account{margin-top:auto;display:flex;flex-direction:column;gap:.6rem;padding:.9rem .6rem 0;border-top:1px solid var(--color-border)}.sidebar__user{display:flex;flex-direction:column;min-width:0}.sidebar__user-name{font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__user-email{font-size:.75rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__account-actions{display:flex;flex-wrap:wrap;gap:.5rem}.sidebar__account-actions .button{flex:1 1 0;padding:.4rem .6rem}.page__header{flex-wrap:wrap}.library-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-left:auto}.library-actions__form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.library-actions__error{flex-basis:100%;font-size:.82rem;color:#ff9a9a}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:grid;place-items:center;background:#0b0d12cc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none}.drop-overlay__message{padding:2.5rem 3.5rem;border:2px dashed var(--color-accent);border-radius:var(--radius-lg);background:var(--color-accent-soft);font-size:1.1rem;font-weight:600}.upload-toast{position:fixed;right:1.25rem;bottom:1.25rem;z-index:130;display:flex;flex-direction:column;gap:.6rem;width:min(340px,calc(100vw - 2.5rem));padding:.9rem 1rem;background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);font-size:.88rem}.upload-toast__bar{height:6px;border-radius:3px;background:var(--color-bg);overflow:hidden}.upload-toast__fill{height:100%;background:var(--color-accent);transition:width .15s ease}.upload-toast__skipped{margin:0;padding-left:1.1rem;color:var(--color-text-muted);font-size:.8rem;overflow-wrap:anywhere}.upload-toast__close{align-self:flex-end;padding:.3rem .7rem}.admin__card{margin-bottom:1.5rem;padding:1rem 1.2rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.admin__error{padding:0 0 1.25rem;text-align:left}.admin__toggle{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer}.admin__toggle input{margin-top:.25rem;accent-color:var(--color-accent)}.admin__toggle>span{display:flex;flex-direction:column;gap:.15rem}.admin__hint{display:block;font-size:.8rem;color:var(--color-text-muted)}.admin__table-wrap{overflow-x:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.admin__table{width:100%;border-collapse:collapse;font-size:.88rem}.admin__table th,.admin__table td{padding:.75rem 1rem;text-align:left;vertical-align:middle;border-bottom:1px solid var(--color-border)}.admin__table th{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.admin__table tbody tr:last-child td{border-bottom:none}.admin__name{font-weight:600}.admin__actions{display:flex;gap:.5rem;justify-content:flex-end}.chip{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600}.chip--active{background:#5ac88c24;color:#7fdca8}.chip--locked{background:#ff808024;color:#ff9a9a}.chip--admin{background:var(--color-accent-soft);color:var(--color-accent)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:140;display:grid;place-items:center;padding:1.5rem;background:#0000008c}.dialog{display:flex;flex-direction:column;gap:1rem;width:min(440px,100%);padding:1.5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 24px 64px #0009}.dialog__title{margin:0;font-size:1.1rem}.dialog__text{margin:0;color:var(--color-text-muted);font-size:.9rem;line-height:1.5}.dialog__buttons{display:flex;justify-content:flex-end;gap:.5rem}.auth-form{display:flex;flex-direction:column;gap:.6rem;width:100%;text-align:left}.auth-card__switch{padding:0;background:none;border:none;color:var(--color-accent);font-size:.85rem;cursor:pointer}.auth-card__switch:hover{text-decoration:underline}.auth-card__note{margin:0;font-size:.85rem;color:var(--color-text-muted)}.admin__add{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.admin__add .input{flex:1 1 12rem;min-width:0}.dialog .input{width:100%}.sidebar__settings{display:flex;flex-direction:column;gap:.15rem}.sidebar__settings-toggle{width:100%;background:none;border:none;text-align:left;cursor:pointer}.sidebar__chevron{flex:0 0 auto;width:16px;height:16px;margin-left:auto;color:var(--color-text-muted);transition:transform .15s ease}.sidebar__chevron--open{transform:rotate(90deg)}.sidebar__tree{display:flex;flex-direction:column;gap:.1rem;margin:0 0 .3rem 1.55rem;padding:0 0 0 .75rem;list-style:none;border-left:1px solid var(--color-border)}.sidebar__tree--nested{margin-left:.2rem;margin-bottom:0}.sidebar__tree-heading{display:block;padding:.35rem .5rem .15rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.sidebar__tree-link{display:block;padding:.35rem .5rem;border-radius:var(--radius-sm);font-size:.88rem;color:var(--color-text-muted);transition:background-color .15s ease,color .15s ease}.sidebar__tree-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebar__tree-link--active{background:var(--color-accent-soft);color:var(--color-accent)}.sidebar__tree-link:focus-visible,.sidebar__settings-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.settings-card+.settings-card{margin-top:1rem}.settings-card__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.settings-card__row>div{display:flex;flex-direction:column;gap:.2rem}.settings-card__success{font-size:.82rem;color:#7fdca8}.photo-tile,.folder-tile{position:relative}.folder-tile{display:flex}.folder-tile>.folder-card{flex:1 1 auto;min-width:0}.photo-tile>.photo-card{display:block;width:100%}.photo-tile[draggable=true]{cursor:grab}.photo-tile--dragging{opacity:.45}.select-box{position:absolute;top:.55rem;left:.55rem;z-index:2;display:grid;place-items:center;width:26px;height:26px;padding:0;background:#0b0d128c;border:2px solid rgba(255,255,255,.85);border-radius:50%;color:transparent;cursor:pointer;opacity:0;transition:opacity .12s ease,background-color .12s ease}.select-box svg{width:16px;height:16px}.photo-tile:hover .select-box,.folder-tile:hover .select-box,.photo-tile:focus-within .select-box,.folder-tile:focus-within .select-box,.photo-tile--selecting .select-box,.folder-tile--selecting .select-box,.select-box[aria-checked=true]{opacity:1}@media (hover: none){.select-box{opacity:1}}.select-box:hover{background:#0b0d12cc}.select-box:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.select-box[aria-checked=true]{background:var(--color-accent);border-color:var(--color-accent);color:#0b0d12}.photo-tile--selected .photo-card,.folder-tile--selected .folder-card{outline:3px solid var(--color-accent);outline-offset:-3px}.photo-tile--selected .photo-card__image{transform:scale(.94);border-radius:var(--radius-sm)}.photo-card__image{transition:transform .12s ease}.folder-tile--droppable .folder-card{border-color:#6c8cff73}.folder-tile--drop .folder-card,.sidebar__item--drop{background:var(--color-accent-soft);border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.sidebar__item--droppable{outline:1px dashed rgba(108,140,255,.5);outline-offset:-1px}.sidebar__item--drop{outline:2px solid var(--color-accent);outline-offset:-2px}.drop-zone{display:flex;align-items:center;justify-content:center;gap:.6rem;margin-bottom:1.5rem;padding:.6rem 1rem;border:1px dashed var(--color-border);border-radius:var(--radius-md);font-size:.82rem;color:var(--color-text-muted);transition:background-color .12s ease,border-color .12s ease,color .12s ease,padding .12s ease}.drop-zone svg{width:18px;height:18px;flex:0 0 auto}.drop-zone--active{padding:1rem;border-color:#6c8cff99;color:var(--color-text)}.drop-zone--over{background:var(--color-accent-soft);border:1px solid var(--color-accent);color:var(--color-accent)}.selection-bar{position:fixed;right:0;bottom:1.25rem;left:var(--sidebar-width);z-index:125;display:flex;justify-content:center;padding:0 1rem;pointer-events:none}.selection-bar__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;max-width:100%;padding:.55rem .75rem;background:#1c202bf5;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 12px 40px #0000008c;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto}.selection-bar__icon{display:grid;place-items:center;width:32px;height:32px;padding:0;background:none;border:none;border-radius:50%;cursor:pointer}.selection-bar__icon:hover{background:var(--color-surface-hover)}.selection-bar__icon svg{width:18px;height:18px}.selection-bar__summary{font-size:.88rem;font-weight:600}.selection-bar__link{padding:0;background:none;border:none;color:var(--color-accent);font-size:.82rem;cursor:pointer}.selection-bar__link:hover{text-decoration:underline}.selection-bar__divider{align-self:stretch;width:1px;margin:0 .25rem;background:var(--color-border)}@media (max-width: 860px){.selection-bar{left:0}}.dialog--wide{width:min(520px,100%)}.picker__crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;font-size:.85rem}.picker__crumb-wrap{display:inline-flex;align-items:center;gap:.25rem}.picker__crumb{padding:.15rem .3rem;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-accent);cursor:pointer}.picker__crumb:hover{background:var(--color-accent-soft)}.picker__list{display:flex;flex-direction:column;gap:.15rem;min-height:8rem;max-height:16rem;overflow-y:auto;padding:.25rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md)}.picker__item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .6rem;background:none;border:none;border-radius:var(--radius-sm);font-size:.9rem;text-align:left;cursor:pointer}.picker__item:hover:not(:disabled){background:var(--color-surface-hover)}.picker__item:disabled{opacity:.4;cursor:default}.picker__item svg{width:16px;height:16px;flex:0 0 auto;color:var(--color-text-muted)}.action-notice{position:fixed;top:1rem;left:50%;z-index:150;display:flex;align-items:center;gap:.75rem;max-width:min(560px,calc(100vw - 2rem));padding:.65rem .9rem;transform:translate(-50%);background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);font-size:.88rem}.action-notice--error{border-color:#ff808080;color:#ff9a9a}.action-notice__close{padding:0 .25rem;background:none;border:none;font-size:1.2rem;line-height:1;color:var(--color-text-muted);cursor:pointer}.new-album-tile{display:flex;min-height:9rem;border:2px dashed var(--color-border);border-radius:var(--radius-lg);transition:border-color .15s ease,background-color .15s ease}.new-album-tile:hover,.new-album-tile:focus-within{border-color:#6c8cff8c;background:#6c8cff0d}.new-album-tile__button{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;background:none;border:none;border-radius:var(--radius-lg);color:var(--color-text-muted);font-size:.9rem;font-weight:500;cursor:pointer;transition:color .15s ease}.new-album-tile__button:hover{color:var(--color-accent)}.new-album-tile__button:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.new-album-tile__button svg{width:32px;height:32px}.new-album-tile__form{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;gap:.6rem;padding:1rem;min-width:0}.new-album-tile__buttons{display:flex;gap:.5rem}.new-album-tile__error{font-size:.8rem;color:#ff9a9a}.viewer{cursor:zoom-out}.viewer__image,.viewer__button,.viewer__nav,.viewer__caption,.info-modal{cursor:default}.viewer__button,.viewer__nav{cursor:pointer}.page__subtitle{margin:0;font-size:.82rem;color:var(--color-text-muted)}.share__section{display:flex;flex-direction:column;gap:.6rem;padding-top:.9rem;border-top:1px solid var(--color-border)}.share__heading{margin:0;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent)}.share__row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.dialog .share__row .input{width:auto}.share__who{flex:1 1 10rem;min-width:0}.share__select{flex:0 0 auto}span.share__who{font-size:.92rem;font-weight:500;overflow:hidden;text-overflow:ellipsis}.share__add{margin-top:.25rem}.share__warning{display:flex;flex-direction:column;gap:.6rem;margin:0;padding:.8rem .9rem;background:#ffbe501a;border:1px solid rgba(255,190,80,.4);border-radius:var(--radius-md);color:#ffd493;font-size:.86rem;line-height:1.45}.share__warning p{margin:0}.share__warning--on{display:block}.public-layout{min-height:100vh}.public-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.5rem;background:#14171fd9;border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.public-bar .sidebar__brand{padding:0}.public-layout__content{container-type:inline-size}
