.album-page{min-height:100vh}.album-page [hidden]{display:none!important}.album-page .site-nav a[aria-current=page]{background:var(--nav-hover-bg);color:var(--green)}
.albums-shell{max-width:1320px;margin:0 auto;padding:2rem clamp(1rem,4vw,3rem) 4rem;min-height:70vh}.album-breadcrumb{display:flex;gap:.65rem;flex-wrap:wrap;color:var(--muted);font-size:.85rem;margin:0 0 2rem}.album-breadcrumb a{color:var(--muted)}
.album-state{max-width:680px;margin:4rem auto;text-align:center}.album-state h1{max-width:none}.album-state p{margin:1rem 0}.album-find{text-align:left;margin:2rem auto;max-width:520px}.album-input-row{display:flex;gap:.7rem}.album-input-row input{min-width:0;flex:1}
.album-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem;flex-wrap:wrap;padding:1rem 0 2rem;border-bottom:1px solid var(--line)}.album-heading h1{font-size:clamp(2.3rem,5vw,4rem);max-width:none;margin:.3rem 0 .8rem}.album-description{max-width:750px;color:var(--muted);white-space:pre-line}.album-heading-meta{display:flex;gap:.6rem;flex-direction:column;align-items:flex-start;font-size:.85rem;color:var(--muted)}.album-badge{border-radius:30px;padding:.4rem .8rem;background:var(--icon-bg);color:var(--tech-dark);font-weight:700}
.album-access{max-width:540px;margin:2.5rem auto;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.3rem,4vw,2.4rem)}.album-access h1{font-size:2.5rem}.album-access h2{font-size:1.65rem;line-height:1.2}.album-muted{color:var(--muted);font-size:.88rem}.album-steps{padding:0;display:flex;gap:1rem;list-style:none;margin:1.5rem 0;color:var(--muted);font-size:.8rem}.album-steps li{padding:.35rem .7rem;border-radius:30px;background:var(--bg)}.album-steps li.is-current{color:var(--tech-dark);background:var(--icon-bg);font-weight:800}
.album-page label{display:block;margin:.8rem 0 .4rem;font-size:.9rem;font-weight:700}.album-page input:not([type=checkbox]),.album-page select,.album-page textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:.8rem .9rem;background:var(--paper);color:var(--ink);font:inherit}.album-page input[type=checkbox]{width:18px;height:18px}.album-page input:focus,.album-page textarea:focus,.album-page select:focus{outline:2px solid var(--green);outline-offset:2px}.album-page textarea{resize:vertical}.album-form-actions{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin-top:1.2rem}.album-page button:disabled{opacity:.55;cursor:default}.album-page .button{white-space:normal;text-align:center}.album-text-button{border:0;background:transparent;color:var(--tech-dark);font:inherit;font-size:.9rem;padding:.6rem .4rem;cursor:pointer;text-decoration:underline;text-underline-offset:.2em;min-height:42px}.album-message{min-height:1.5em;font-size:.9rem;margin:1rem 0;color:var(--muted);overflow-wrap:anywhere}.album-message.is-error{color:var(--ink);font-weight:700;border-left:3px solid var(--gold);padding-left:.7rem}
.album-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1rem 0}.album-toolbar-meta{display:flex;gap:.7rem;align-items:center;font-size:.8rem;color:var(--muted)}.album-folder-breadcrumb{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.album-folders{display:flex;flex-wrap:wrap;gap:.6rem;margin:.5rem 0 1.4rem}.album-folder{padding:.7rem 1rem;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font:inherit;font-size:.9rem;cursor:pointer;display:flex;gap:.65rem;align-items:center}.album-folder span{color:var(--muted);font-size:.8rem}.album-folder:hover{border-color:var(--green)}
.album-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;align-items:start}.album-tile{min-width:0}.album-tile-open{width:100%;border:0;padding:0;overflow:hidden;border-radius:12px;background:var(--media-bg);cursor:pointer;display:block}.album-tile-open img{display:block;width:100%;height:auto;object-fit:contain;transition:transform .2s}.album-tile-open:hover img{transform:scale(1.025)}.album-tile-caption{display:flex;align-items:center;justify-content:space-between;gap:.3rem;padding:.5rem 0}.album-tile-caption>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;min-width:0;font-size:.78rem;color:var(--muted)}.album-icon-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;width:42px;height:42px;flex:0 0 42px;cursor:pointer;color:var(--ink);background:var(--paper)}.album-icon-button:hover{background:var(--icon-bg)}
.album-lightbox{width:min(1160px,96vw);max-height:94svh;border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--ink);padding:1rem;overflow:auto}.album-lightbox::backdrop{background:rgba(0,0,0,.8)}.album-lightbox-top,.album-lightbox-bottom{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.album-lightbox-top h2{font-size:1rem;overflow-wrap:anywhere}.album-lightbox-stage{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.7rem;margin:1rem 0;background:var(--bg);min-height:200px}.album-lightbox-stage img{width:100%;height:65svh;object-fit:contain}.album-lightbox-bottom{color:var(--muted);font-size:.85rem}.album-page.photo-open{overflow:hidden}
.album-site-footer{max-width:1320px;padding:1.5rem clamp(1rem,4vw,3rem);margin:auto;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.8rem;color:var(--muted);border-top:1px solid var(--line)}.album-site-footer a{color:var(--muted)}
.album-admin-heading,.album-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.album-admin-heading h1{font-size:3rem;margin:.3rem 0}.album-admin-heading .album-form-actions{margin:0}.album-admin-list{display:grid;gap:.8rem;margin:1.3rem 0 2rem}.album-admin-row{padding:1.2rem;background:var(--paper);border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.album-admin-row h2{font-size:1.15rem;margin:0 0 .4rem}.album-admin-row p{font-size:.85rem;color:var(--muted);margin:.2rem 0}.album-admin-row-actions{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}.album-editor{background:var(--paper);padding:clamp(1rem,3vw,2rem);border:1px solid var(--line);border-radius:var(--radius)}.album-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem 1.4rem}.album-form-wide{grid-column:1/-1}.album-editor section{margin-top:2rem;padding-top:1.8rem;border-top:1px solid var(--line)}.album-editor h3{font-size:1.3rem;margin:0 0 .5rem}.album-drop-zone{border:2px dashed var(--line);padding:2rem;text-align:center;border-radius:12px;background:var(--bg);display:flex;gap:.6rem;flex-direction:column;align-items:center;cursor:pointer;margin-top:1rem}.album-drop-zone>i{font-size:1.8rem;color:var(--green)}.album-drop-zone.is-dragging{border-color:var(--green);background:var(--icon-bg)}.album-drop-zone span{color:var(--muted);font-size:.85rem}.album-upload-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.album-checkbox{display:flex!important;gap:.6rem;align-items:center;font-weight:400!important}.album-page progress{width:100%;height:10px;accent-color:var(--green)}.album-upload-failures{font-size:.85rem;color:var(--muted);overflow-wrap:anywhere;max-height:240px;overflow:auto}.album-archive-panel{padding:1.3rem!important;background:var(--bg);border-radius:12px;border:1px solid var(--line)!important}.album-archive-panel p{font-size:.9rem}.album-activity-filter{display:flex;gap:.8rem;align-items:flex-end;flex-wrap:wrap}.album-activity-filter label{flex:1 1 180px}.album-activity-filter .button{margin-bottom:.4rem}.album-table-wrap{overflow:auto}.album-table{width:100%;border-collapse:collapse;font-size:.8rem;margin-top:1rem}.album-table th,.album-table td{text-align:left;padding:.7rem .5rem;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}.album-table th{color:var(--muted);font-weight:600}.album-table td:nth-child(2){max-width:240px}
@media(max-width:980px){.album-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.album-heading{gap:1rem}.album-heading-meta{flex-direction:row;flex-wrap:wrap;align-items:center}}
@media(max-width:640px){.albums-shell{padding-top:1.2rem}.album-breadcrumb{margin-bottom:1.3rem}.album-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.album-access{margin:1.5rem auto}.album-heading h1{font-size:2.4rem}.album-input-row{flex-direction:column}.album-form-grid{grid-template-columns:1fr}.album-lightbox{padding:.6rem}.album-lightbox-stage{gap:.3rem;grid-template-columns:30px minmax(0,1fr) 30px}.album-lightbox-stage .album-icon-button{width:30px;height:42px;border-radius:8px}.album-lightbox-stage img{height:55svh}.album-tile-caption .album-icon-button{width:34px;height:34px;flex-basis:34px}.album-admin-heading h1{font-size:2.5rem}.album-access input{font-size:16px}.album-toolbar-meta{width:100%;justify-content:space-between}.album-table{min-width:560px}}
@media(prefers-reduced-motion:reduce){.album-tile-open img{transition:none}}

.admin-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1.5rem 0}.admin-stat{display:flex;flex-direction:column;gap:.4rem;padding:1.5rem;border:1px solid var(--line);border-radius:14px;background:var(--paper)}.admin-stat strong{font-size:1.8rem}.admin-stat span{color:var(--muted);font-size:.88rem}@media(max-width:640px){.admin-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-stat{padding:1rem}}

.admin-login { width: 100%; max-width: 480px; }
.admin-login__heading { margin-bottom: 1.75rem; }
.admin-login__heading .eyebrow { margin: 0 0 .5rem; }
.admin-login__heading h1 { margin: 0; font-size: clamp(1.75rem, 4vw, 2.25rem); line-height: 1.2; }
#admin-login-form { display: grid; gap: 1.25rem; }
.admin-login__field { min-width: 0; }
.admin-login__field label { margin: 0 0 .5rem; }
.admin-login__actions .button { width: 100%; min-height: 50px; }
.admin-login__actions .album-message { min-height: 0; margin: 0; }
.admin-login__actions .album-message:not(:empty) { margin-top: 1rem; }
.admin-password-control { position: relative; }
.admin-password-control input { min-width: 0; padding-right: 3rem; }
.admin-password-toggle { position: absolute; right: .4rem; top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--muted); font-size: 1rem; cursor: pointer; }
.admin-password-toggle:hover { background: var(--icon-bg); }
.admin-password-toggle:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }

.album-code-control { display: flex; align-items: center; gap: .5rem; }
.album-code-control input { min-width: 0; font-variant-numeric: tabular-nums; letter-spacing: .15em; }
.album-code-control button { flex: 0 0 42px; text-decoration: none; }
.album-tag-composer { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; padding: .6rem; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.album-tag-list { display: contents; }
.album-tag { display: inline-flex; align-items: center; gap: .4rem; padding: .25rem .45rem .25rem .75rem; border-radius: 999px; background: var(--icon-bg); color: var(--tech-dark); font-size: .88rem; max-width: 100%; overflow-wrap: anywhere; }
.album-tag button { border: 0; border-radius: 50%; background: transparent; color: inherit; width: 28px; height: 28px; flex: 0 0 28px; font-size: 1rem; cursor: pointer; }
.album-tag button:hover { background: var(--paper); }
.album-tag-composer #edit-tags { flex: 1 1 180px; min-width: 0; width: auto; border: 0; background: transparent; padding: .4rem; }
.album-tag-composer:focus-within { outline: 2px solid var(--green); outline-offset: 2px; }
.album-tag-composer #edit-tags:focus { outline: none; }
.album-admin-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .7rem; }
.album-public-cover { max-width: 800px; margin: 1.5rem auto 2rem; user-select: none; }
.album-public-cover img { width: 100%; max-height: 420px; object-fit: contain; border-radius: var(--radius); -webkit-user-drag: none; }
.album-public-cover figcaption { margin-top: .5rem; text-align: center; font-size: .85rem; color: var(--muted); }
.album-cover-preview { width: 100%; max-width: 320px; max-height: 200px; object-fit: contain; border-radius: 12px; margin: 1rem 0; }
@media (max-width: 640px) {
    .album-public-cover { margin: 1rem auto 1.5rem; }
    .album-public-cover img { max-height: 280px; }
}

.visitor-controls,.selection-toolbar,.viewer-actions{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.visitor-controls{padding:1rem 0;border-top:1px solid var(--line)}.selection-toolbar{position:sticky;top:88px;z-index:15;padding:.8rem;background:var(--paper);border:1px solid var(--line);border-radius:12px;margin:.5rem 0 1.2rem}.photo-choice-controls{display:flex;align-items:center;justify-content:space-between;gap:.4rem}.photo-choice-controls label{margin:0!important}.photo-choice-controls .album-icon-button[aria-pressed=true],#photo-favorite[aria-pressed=true]{color:#ba3957;background:var(--icon-bg)}.download-history{display:block;font-size:.72rem;color:var(--muted);padding:.3rem 0}.album-lightbox-stage{overflow:hidden;touch-action:none}.album-lightbox-stage img{transform-origin:center;user-select:none;-webkit-user-drag:none}.album-lightbox-stage button{z-index:2}.viewer-actions{justify-content:flex-end}.dashboard-filters{display:flex;align-items:flex-end;gap:.8rem;flex-wrap:wrap;padding:1rem;background:var(--paper);border:1px solid var(--line);border-radius:12px;margin:1.5rem 0}.dashboard-filters label{flex:1 1 150px;margin:0!important}.dashboard-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.5rem 0}.dashboard-charts>section{margin:0;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--paper);min-width:0}.dashboard-charts>section:first-child{grid-column:1/-1}.dashboard-charts h3{font-size:1.1rem}.dashboard-bar-row{display:grid;grid-template-columns:minmax(0,1fr) 1fr auto;gap:.7rem;align-items:center;font-size:.8rem;margin:.6rem 0}.dashboard-bar-row span{overflow-wrap:anywhere}.dashboard-bar-row meter{width:100%;accent-color:var(--green)}.activity-timeline svg{width:100%;max-height:220px;color:var(--green)}
@media(max-width:640px){.selection-toolbar{top:76px}.selection-toolbar .button{padding:.6rem .8rem;font-size:.85rem}.dashboard-charts{grid-template-columns:1fr}.visitor-controls .button,.visitor-controls .album-text-button{font-size:.8rem}.album-lightbox-bottom{align-items:flex-start;flex-direction:column}.viewer-actions{width:100%;justify-content:space-between}.viewer-actions .button{padding:.6rem .8rem}}

/* Album details keep the title and useful dates together at every screen size. */
.album-preview-banner{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;flex-wrap:wrap;margin:0 0 1.25rem;padding:.85rem 1rem;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:10px;background:var(--icon-bg);color:var(--ink)}
.album-preview-banner strong{display:block;font-size:.95rem}
.album-preview-banner p{margin:.2rem 0 0;font-size:.85rem;line-height:1.5}
.album-preview-banner a{font-size:.85rem;font-weight:600;white-space:nowrap}
.album-heading--compact{padding:.25rem 0 1rem;gap:.75rem 1.5rem;align-items:center;flex-wrap:nowrap}
.album-heading--compact .album-heading-copy{min-width:0;flex:1}
.album-heading--compact h1{font-size:clamp(1.8rem,3.2vw,2.75rem);line-height:1.15;margin:.25rem 0 .65rem;overflow-wrap:anywhere}
.album-heading--compact .eyebrow{margin:0;font-size:.75rem}
.album-heading--compact .album-description{margin:.25rem 0 .9rem}
.album-date-capsules{display:flex;align-items:flex-end;flex-direction:column;gap:.4rem;flex:0 0 auto;margin:0}
.album-date-capsule{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--line);border-radius:999px;padding:.45rem .8rem;background:var(--surface,#fff);color:var(--muted);font-size:.8rem;line-height:1.4}
.album-date-capsule strong{font-weight:600;color:var(--ink);margin-left:.3rem}
@media(max-width:760px){.album-heading--compact{flex-wrap:wrap}.album-heading--compact .album-heading-copy{flex-basis:100%}.album-date-capsules{flex-direction:row;align-items:center;flex-wrap:wrap;flex-shrink:1}}
@media(max-width:600px){.album-heading--compact{padding:0 0 1rem}.album-heading--compact h1{font-size:1.8rem}.album-date-capsule{font-size:.75rem;padding:.4rem .65rem}}

.album-code-entry{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.5rem;max-width:340px;margin:.6rem 0}
.album-code-entry input[type="text"]{width:100%;min-width:0;padding:.7rem 0;text-align:center;font-size:1.4rem;font-weight:600;font-variant-numeric:tabular-nums;border-radius:.65rem;line-height:1.3;caret-color:var(--ink)}
@media(max-width:420px){.album-code-entry{gap:.35rem}.album-code-entry input[type="text"]{padding:.6rem 0;font-size:1.2rem}}

/* Compact album list: title and state, identity, then grouped metadata. */
.album-admin-list{gap:.65rem;margin:1rem 0 1.5rem}
.album-admin-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.75rem 1.25rem;padding:1rem 1.1rem}
.album-admin-info{display:grid;gap:.4rem;min-width:0}
.album-admin-row-title{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .65rem}
.album-admin-row-title h2{margin:0;font-size:1.05rem;line-height:1.35;overflow-wrap:anywhere}
.album-admin-state{padding:.15rem .55rem;font-size:.7rem;line-height:1.5}
.album-admin-identity,.album-admin-details{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem 1rem;color:var(--muted);font-size:.78rem;line-height:1.5}
.album-admin-identity>span{overflow-wrap:anywhere;min-width:0}
.album-admin-details>span{white-space:nowrap}
.album-admin-row .album-admin-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin:0}
.album-admin-row .album-tag{font-size:.72rem;padding:.1rem .5rem}
.album-admin-row-actions{gap:.35rem .7rem;justify-content:flex-end;align-items:center}
.album-admin-row-actions .button{min-height:36px;padding:.4rem .8rem;font-size:.8rem}
.album-admin-row-actions .album-text-button,.album-admin-row-actions .quiet-link{font-size:.8rem;min-height:36px;display:inline-flex;align-items:center}
@media(max-width:760px){.album-admin-row{grid-template-columns:minmax(0,1fr);gap:.65rem;padding:.85rem 1rem}.album-admin-row-actions{justify-content:flex-start}.album-admin-identity{gap:.2rem .8rem}.album-admin-details{gap:.35rem .75rem}}

.album-admin-details>.album-event-dates{white-space:normal}

/* Justified rows preserve the image and align its neighbors without cropping. */
.album-grid.album-grid--justified{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px}
.album-grid--justified>.album-tile{flex:0 0 auto;width:var(--tile-width,180px)}
.album-grid--justified>.is-layout-pending{display:none}
.album-grid--justified[aria-busy="true"]::after{content:'Loading thumbnails…';flex-basis:100%;padding:1rem 0;color:var(--muted);font-size:.85rem}
.album-grid--justified .album-tile-open{height:var(--tile-height,145px);border-radius:10px}
.album-grid--justified .album-tile-open img{width:100%;height:100%;object-fit:contain;transition:none}
.album-grid--justified .album-tile-open:hover img{transform:none}
.album-grid--justified .album-tile-caption{gap:.25rem;padding:.3rem 0 .2rem;min-height:36px}
.album-grid--justified .album-tile-caption>span{font-size:.72rem}
.album-grid--justified .album-icon-button{width:30px;height:30px;flex-basis:30px;font-size:.8rem}
.album-grid--justified .photo-choice-controls{height:32px;font-size:.75rem}
.album-grid--justified .photo-choice-controls input{margin:0;width:16px;height:16px}
.album-grid--justified .photo-choice-controls label{gap:.35rem;font-size:.75rem}
.album-tile--narrow .photo-choice-controls label>span{display:none}
.album-grid--justified .download-history{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:.15rem 0;font-size:.65rem}

/* Folder covers reuse an authorized thumbnail, including from nested folders. */
.album-folders.album-folder-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:.8rem;width:100%}
.album-folder-cards:empty{display:none}
.album-folder-cards .album-folder{display:grid;grid-template-columns:80px minmax(0,1fr);gap:.85rem;padding:.65rem;text-align:left;min-width:0;min-height:104px}
.album-folder-cards .album-folder-media{width:80px;height:80px;display:grid;place-items:center;border-radius:8px;overflow:hidden;background:var(--bg)}
.album-folder-media>*{grid-area:1/1}
.album-folder-media img{width:100%;height:100%;object-fit:contain}
.album-folder-media i{font-size:1.6rem;color:var(--green)}
.album-folder-cards .album-folder-copy{display:grid;gap:.3rem;min-width:0}
.album-folder-copy strong{font-size:1.12rem;line-height:1.25;color:var(--ink);font-weight:700;overflow-wrap:anywhere}
.album-folder-copy>span{font-size:.8rem;color:var(--muted)}
.album-folder-cards .album-folder:hover{background:var(--icon-bg)}

/* Public browsing exposes covers and titles; photo access still requires verification. */
.album-browser-heading{margin:0 0 1.75rem;max-width:760px}
.album-browser-heading h1{font-size:clamp(1.9rem,4vw,3rem);line-height:1.15;margin:.4rem 0 .75rem;max-width:none}
.album-browser-heading>p:last-child{color:var(--muted);margin:0}
.album-browser-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(310px,100%),1fr));gap:1.25rem}
.album-browser-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--paper);color:var(--ink);text-decoration:none;transition:border-color .2s,box-shadow .2s}
.album-browser-card:hover,.album-browser-card:focus-visible{border-color:var(--green);box-shadow:0 5px 18px rgba(0,0,0,.07)}
.album-browser-cover{position:relative;display:grid;place-items:center;aspect-ratio:16/10;background:var(--icon-bg);overflow:hidden}
.album-browser-cover>i{font-size:2.25rem;color:var(--green)}
.album-browser-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;-webkit-user-drag:none;user-select:none}
.album-browser-copy{display:flex;flex-direction:column;gap:.65rem;padding:1rem;flex:1}
.album-browser-copy h2{font-size:1.2rem;line-height:1.3;margin:0;overflow-wrap:anywhere}
.album-browser-dates{margin:0;color:var(--muted);font-size:.85rem}
.album-browser-card-footer{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:auto;padding-top:.25rem;font-size:.75rem;color:var(--muted)}
.album-browser-open{font-size:.85rem;font-weight:600;color:var(--green)}
.album-browser-empty{padding:1.5rem;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--muted)}
.album-browser-pagination{display:flex;justify-content:center;align-items:center;gap:1.5rem;margin:1.75rem 0;font-size:.9rem}
.album-browser-link{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--line);font-size:.9rem}
.album-browser-link summary{cursor:pointer;color:var(--muted)}
.album-browser-link .album-find{margin:1rem 0}
@media(max-width:640px){.album-browser-grid{gap:1rem}.album-browser-heading{margin-bottom:1.25rem}}

/* Album-scoped activity intelligence. */
.activity-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin:1rem 0 1.5rem}
.activity-stat-grid .admin-stat{padding:1rem 1.2rem}
.activity-tabs{display:flex;gap:.35rem;border-bottom:1px solid var(--line);overflow-x:auto}
.activity-tabs [role=tab]{border:0;border-bottom:3px solid transparent;border-radius:8px 8px 0 0;padding:.8rem 1.1rem;background:transparent;color:var(--muted);font:inherit;font-weight:600;cursor:pointer}
.activity-tabs [aria-selected=true]{border-bottom-color:var(--green);background:var(--icon-bg);color:var(--ink)}
.activity-refresh-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 0;font-size:.8rem}
.activity-refresh-row p{margin:0}
#activity-tab-content[aria-busy=true]{opacity:.65;pointer-events:none}
.activity-chart{padding:1.2rem;border:1px solid var(--line);border-radius:12px;background:var(--paper);margin:0 0 1rem;min-width:0}
.activity-chart h3{font-size:1.1rem;margin:0 0 1rem}
.activity-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.activity-chart-plot svg{display:block;width:100%;height:auto;color:var(--muted)}
.activity-chart-plot details{margin-top:1rem;font-size:.8rem}
.activity-chart-plot summary{cursor:pointer}
.activity-legend{display:flex;gap:.75rem 1rem;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}
.activity-legend span{display:inline-flex;align-items:center;gap:.4rem}
.activity-legend i{width:10px;height:10px;border-radius:50%}
.activity-heat-scroll{overflow:auto}
.activity-heatmap{display:grid;grid-template-columns:36px repeat(24,minmax(18px,1fr));gap:4px;min-width:620px;align-items:center;font-size:.65rem;color:var(--muted)}
.activity-heat-cell{height:22px;border-radius:3px;background:var(--green);opacity:calc(.08 + var(--heat)*.92)}
.activity-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(235px,100%),1fr));gap:1rem;margin:1.25rem 0}
.activity-photo-card{padding:.75rem;border:1px solid var(--line);border-radius:12px;background:var(--paper);min-width:0}
.activity-photo-open{border:0;background:transparent;padding:0;display:block;text-align:left;width:100%;color:var(--ink);font:inherit;cursor:pointer}
.activity-photo-open>strong{display:block;margin:.6rem 0 .25rem;font-size:.9rem;overflow-wrap:anywhere}
.activity-photo-thumb,.activity-photo-large{display:grid;place-items:center;position:relative;background:var(--icon-bg);overflow:hidden;border-radius:8px;aspect-ratio:4/3;text-align:center}
.activity-photo-thumb img,.activity-photo-large img{position:absolute;inset:0;object-fit:contain;width:100%;height:100%}
.activity-photo-large{aspect-ratio:16/9;max-height:420px;margin:0 auto 1rem;max-width:800px}
.activity-photo-path{font-size:.7rem;color:var(--muted);overflow-wrap:anywhere;margin:.25rem 0 .65rem}
.activity-photo-metrics{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.35rem .75rem;font-size:.8rem;margin:.75rem 0}
.activity-photo-metrics dt{color:var(--muted)}
.activity-photo-metrics dd{margin:0;font-weight:600}
.activity-detail{width:min(1000px,calc(100% - 2rem));max-height:90svh;overflow:auto;border:1px solid var(--line);border-radius:14px;background:var(--bg);color:var(--ink);padding:1.25rem}
.activity-detail::backdrop{background:rgba(0,0,0,.5)}
.activity-detail-heading{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}
.activity-detail-heading h3{margin:0;overflow-wrap:anywhere;font-size:1.2rem}
.activity-detail .album-table{font-size:.8rem}
.activity-empty,.activity-prompt{padding:1.5rem;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}
.activity-footnote{font-size:.75rem;color:var(--muted);margin:1.5rem 0;line-height:1.6}
@media(max-width:760px){.activity-chart-grid{grid-template-columns:1fr}.activity-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.activity-stat-grid .admin-stat{padding:.85rem}.activity-stat-grid strong{font-size:1.5rem}.activity-stat-grid span{font-size:.8rem}.activity-tabs [role=tab]{padding:.7rem .8rem;font-size:.85rem}.activity-chart{padding:.85rem}.activity-detail{padding:1rem}.activity-refresh-row{font-size:.75rem}}
#admin-global-activity-panel>h2{font-size:1.3rem;margin:0 0 .4rem}
#admin-activity-filter{display:grid;grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) repeat(2,minmax(140px,1fr)) auto;align-items:end}
#admin-activity-filter label{min-width:0}
#activity-results .album-table th,.activity-detail .album-table th{white-space:nowrap;overflow-wrap:normal}
#activity-results .album-table td,.activity-detail .album-table td{min-width:70px}
@media(max-width:1100px){#admin-activity-filter{grid-template-columns:repeat(2,minmax(0,1fr))}#admin-activity-filter label:first-child{grid-column:1/-1}}
@media(max-width:640px){#admin-activity-filter label:nth-child(2){grid-column:1/-1}#admin-activity-filter input,#admin-activity-filter select{min-width:0;width:100%;font-size:16px}#admin-activity-filter .button{grid-column:1/-1}#activity-results .album-table td,.activity-detail .album-table td{white-space:nowrap}}

#admin-status:empty{display:none}
.admin-remember{margin:0!important;font-size:.9rem;cursor:pointer}
.admin-remember input{width:18px;height:18px;flex:0 0 18px;margin:0;padding:0;accent-color:var(--green)}
.album-upload-destination{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem}
.album-upload-destination label{min-width:0}
.album-zip-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;margin:1.5rem 0}
.album-zip-heading h2{margin:0 0 .5rem;font-size:1.6rem}
.album-zip-heading p{margin:0;max-width:650px}
.album-zip-heading>a{flex-shrink:0}
.album-zip-parts{display:grid;gap:1rem;margin:1rem 0 1.5rem}
.album-zip-card{display:flex;align-items:center;gap:1rem;padding:1.25rem;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.album-zip-card>i{font-size:1.8rem;color:var(--green);padding:.5rem}
.album-zip-copy{flex:1;min-width:0}.album-zip-copy h3{margin:0 0 .25rem;font-size:1.2rem}.album-zip-copy p{margin:0;color:var(--muted);font-size:.9rem}
@media(max-width:640px){.album-zip-heading{flex-direction:column;gap:1rem}.album-zip-card{flex-wrap:wrap;padding:1rem}.album-zip-card>.button{width:100%;justify-content:center;text-align:center}}
.album-drop-zone[aria-disabled=true]{opacity:.65;cursor:wait}
.album-upload-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;margin-top:1.25rem;align-items:center}
.album-upload-choice{display:flex;flex-direction:column;align-items:flex-start;gap:.65rem;min-width:0}
.album-upload-choice>.album-muted{font-size:.8rem;line-height:1.5}
.album-upload-choice .button{display:inline-flex;align-items:center;gap:.6rem}
.album-folder-option{display:flex!important;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--bg);margin:0!important;cursor:pointer;min-width:0}
.album-folder-option strong{display:block;font-size:.9rem}
.album-folder-option small{display:block;font-size:.8rem;font-weight:400;color:var(--muted);line-height:1.5;margin-top:.25rem}
.album-upload-switch{position:relative;display:flex;align-items:center;justify-content:center;width:48px;height:44px;flex:0 0 48px}
.album-upload-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
.album-upload-switch>span{width:44px;height:26px;border-radius:20px;background:var(--muted);position:relative;transition:background .15s}
.album-upload-switch>span:before{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--paper);transition:transform .15s}
.album-upload-switch input:checked+span{background:var(--green)}
.album-upload-switch input:checked+span:before{transform:translateX(18px)}
.album-upload-switch input:focus-visible+span{outline:2px solid var(--green);outline-offset:4px}
.album-upload-switch input:disabled{cursor:wait}
.album-upload-switch input:disabled+span{opacity:.5}
@media(prefers-reduced-motion:reduce){.album-upload-switch>span,.album-upload-switch>span:before{transition:none}}
@media(max-width:760px){.album-upload-options{grid-template-columns:1fr;gap:1rem}}
@media(max-width:640px){.album-upload-destination{grid-template-columns:1fr}}

/* Photo management and person filters share the album's tag styling. */
.admin-photo-tools,.album-people-panel{padding:1rem;border:1px solid var(--border);border-radius:12px;margin:1rem 0;background:var(--surface,#fff)}
.album-people-search{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;margin:.4rem 0 .7rem}
.album-people-search input{flex:1 1 220px;min-width:0}.album-people-search select{width:auto;max-width:100%}
.admin-photo-tools .selection-toolbar{margin:0 0 1rem}.admin-photo-tools .album-form-actions{margin-top:.65rem}
.album-delete-button{background:#9b2626;border-color:#9b2626;color:#fff}.album-delete-button:hover{background:#7e1e1e}
.photo-person-names{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.7rem;color:var(--muted);line-height:1.4;overflow-wrap:anywhere;margin:.2rem 0 .45rem}
@media(max-width:600px){.album-people-search>input{flex-basis:100%}.admin-photo-tools{padding:.8rem}.admin-photo-tools .selection-toolbar{gap:.6rem}}
