:root{
  --bg:#0b0d10;
  --panel:#14181d;
  --panel2:#1a1f26;
  --text:#f4f6f8;
  --muted:#9ca7b3;
  --line:#2a323c;
  --accent:#f5f7fa;
  --danger:#ff7b7b;
  --success:#8ad8a6;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
body{margin:0;min-height:100vh}
a{color:inherit}
.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 max(22px,calc((100vw - 1320px)/2));border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(11,13,16,.92);backdrop-filter:blur(18px);z-index:20}
.brand{text-decoration:none;font-weight:800;letter-spacing:-.03em;font-size:19px}
.topbar nav{display:flex;gap:18px}.topbar nav a{font-size:14px;color:var(--muted);text-decoration:none}.topbar nav a:hover{color:var(--text)}
.container{width:min(1320px,calc(100% - 36px));margin:0 auto;padding:42px 0 70px}
.hero{padding:26px 0 36px}.hero h1,.page-head h1,.panel h1{font-size:clamp(32px,5vw,58px);line-height:1;margin:8px 0 14px;letter-spacing:-.055em}.hero p{font-size:18px;color:var(--muted);margin:0}
.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:11px;font-weight:800;color:var(--muted)}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:20px}
.gallery-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;overflow:hidden;text-decoration:none;transition:.16s ease}
.gallery-card:hover{transform:translateY(-2px);border-color:#4a5562}
.cover{aspect-ratio:16/10;background:var(--panel2);position:relative;overflow:hidden}.cover img{width:100%;height:100%;object-fit:cover;display:block}.placeholder{height:100%;display:grid;place-items:center;color:var(--muted)}
.lock{position:absolute;right:12px;top:12px;background:rgba(0,0,0,.7);padding:7px 10px;border-radius:999px;font-size:12px;backdrop-filter:blur(8px)}
.card-copy{padding:16px 17px 18px;display:flex;align-items:end;justify-content:space-between;gap:12px}.card-copy h2{font-size:18px;margin:0}.card-copy span{color:var(--muted);font-size:13px;white-space:nowrap}
.page-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:30px}.page-head h1{font-size:42px;margin-top:12px}.page-head p{margin:8px 0 0}.back{font-size:14px;color:var(--muted);text-decoration:none}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.photo-card{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.photo-open{display:block;border:0;background:#08090b;padding:0;width:100%;cursor:zoom-in;aspect-ratio:4/3;overflow:hidden}.photo-open img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.photo-open:hover img{transform:scale(1.015)}.photo-meta{padding:10px;display:flex;align-items:center;gap:10px;justify-content:space-between;font-size:12px}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.button{appearance:none;border:1px solid #3b4652;background:#20262e;color:var(--text);padding:9px 13px;border-radius:9px;text-decoration:none;font:inherit;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.button:hover{background:#29313a}.button.primary{background:var(--accent);color:#0a0c0f;border-color:var(--accent);font-weight:700}.button.small{font-size:12px;padding:6px 9px}.button:disabled{opacity:.45;cursor:not-allowed}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:20px}.panel.narrow{width:min(470px,100%);margin:70px auto}.panel.narrow h1{font-size:34px}
.stack{display:grid;gap:15px}.form-grid{display:grid;grid-template-columns:1.2fr 1.3fr 1.2fr auto;gap:14px;align-items:start}
label{display:grid;gap:7px;font-size:13px;font-weight:650}label small{color:var(--muted);font-weight:400;line-height:1.35}
input,select{width:100%;border:1px solid #35404b;background:#0f1216;color:var(--text);border-radius:9px;padding:10px 11px;font:inherit;outline:none}input:focus,select:focus{border-color:#6c7887}
.muted{color:var(--muted)}.smalltext{font-size:12px}.align-end{align-self:end}
.alert{padding:12px 14px;border-radius:10px;margin-bottom:18px;border:1px solid}.alert.error{background:#301a1d;border-color:#5d2f35;color:#ffb0b0}.alert.success{background:#13271c;border-color:#285a3a;color:#b6efc7}
.empty{border:1px dashed #38424d;border-radius:16px;padding:54px 24px;text-align:center;color:var(--muted)}.empty h2{color:var(--text);margin-top:0}
.admin-link{text-align:center;margin-top:34px;color:var(--muted);font-size:13px}
.hint{padding:12px 14px;border:1px solid var(--line);background:#101419;border-radius:10px;color:var(--muted);font-size:13px;margin-bottom:18px}
.admin-head{align-items:center}.upload-inline{margin:0}
.review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.review-card{background:var(--panel);border:1px solid var(--line);border-radius:15px;overflow:hidden}.review-card>a{display:block;aspect-ratio:4/3;background:#07090b}.review-card img{width:100%;height:100%;object-fit:cover;display:block}.review-copy{padding:13px;display:grid;gap:10px}.move-row{display:grid;grid-template-columns:1fr auto;gap:8px}.link-danger{background:none;border:0;padding:2px 0;color:var(--danger);cursor:pointer;font:inherit;font-size:12px}
.folder-admin-list{display:grid;gap:12px}.folder-row{display:grid;grid-template-columns:1fr 1.2fr 1.2fr auto auto;gap:14px;align-items:center;margin:0}.check{display:flex;align-items:center;gap:8px;white-space:nowrap}.check input{width:auto}
dialog#lightbox{width:min(96vw,1500px);height:min(94vh,1100px);background:#07090b;border:1px solid #343d47;border-radius:16px;padding:0;color:var(--text);overflow:hidden}dialog::backdrop{background:rgba(0,0,0,.88)}#lightbox-image{width:100%;height:calc(100% - 58px);object-fit:contain;display:block}.lightbox-bar{height:58px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:#11151a}.lightbox-close{position:absolute;top:12px;right:12px;width:38px;height:38px;border-radius:999px;border:0;background:rgba(0,0,0,.72);color:white;font-size:26px;cursor:pointer;z-index:4}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#0b0e12;border:1px solid var(--line);padding:.12em .35em;border-radius:5px}
@media(max-width:850px){.form-grid,.folder-row{grid-template-columns:1fr}.folder-row{align-items:stretch}.page-head{align-items:flex-start;flex-direction:column}.container{width:min(100% - 24px,1320px);padding-top:28px}}


/* v2 additions */
.top-actions{display:flex;align-items:center;gap:18px}.top-search{margin:0}.top-search input{width:220px;padding:8px 10px}
.hero.compact{padding-bottom:22px}.gallery-description{max-width:780px;color:var(--muted);font-size:16px!important;line-height:1.55}.gallery-page-head{align-items:flex-end}.head-buttons{display:flex;gap:10px;flex-wrap:wrap}
.breadcrumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:24px;color:var(--muted);font-size:13px}.breadcrumbs a{text-decoration:none}.breadcrumbs strong{color:var(--text)}
.toolbar{display:flex;justify-content:space-between;gap:14px;margin-bottom:30px}.gallery-filter{display:grid;grid-template-columns:minmax(220px,360px) 180px auto auto;gap:9px;width:100%}.button.ghost{background:transparent}.button.danger{border-color:#63343a;background:#361d21;color:#ffb2b2}.button.danger:hover{background:#46252a}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:30px 0 14px}.section-title h2{margin:0;font-size:19px}.subalbums{margin-bottom:34px}.card-copy>div{min-width:0}.card-copy p{margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.4}
.photo-title-wrap{min-width:0}.photo-title-wrap small{display:block;color:var(--muted);margin-top:4px}.reaction-row{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.reaction{appearance:none;border:0;border-right:1px solid var(--line);background:#101419;color:var(--muted);padding:9px;font:inherit;font-size:12px;cursor:pointer}.reaction:last-child{border-right:0}.reaction:hover{color:var(--text);background:#171c22}.reaction.active{color:var(--text);background:#222932;font-weight:700}
.lightbox-stage{height:calc(100% - 78px);display:grid;place-items:center;overflow:hidden}.lightbox-stage #lightbox-image{width:100%;height:100%;object-fit:contain}.lightbox-bar.expanded{height:78px}.lightbox-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:5px;color:var(--muted);font-size:11px}.lightbox-meta b{color:#d5dbe2;margin-right:4px}
.search-large{display:grid;grid-template-columns:1fr auto;gap:10px;max-width:760px}.search-large input{font-size:17px;padding:13px 14px}.search-count{margin:18px 0}.link-open{text-decoration:none}.search-results{margin-top:18px}
.bulkbar{position:sticky;top:78px;z-index:12;display:grid;grid-template-columns:auto auto minmax(220px,1fr) auto auto;gap:10px;align-items:center;background:#11161b;border:1px solid var(--line);border-radius:13px;padding:10px 12px;margin-bottom:16px;box-shadow:0 12px 28px rgba(0,0,0,.25)}.review-card{position:relative}.review-select{position:absolute;top:10px;left:10px;z-index:3;background:rgba(0,0,0,.72);border-radius:8px;padding:7px}.review-select input{width:18px;height:18px}.review-card:has(.select-image:checked){outline:2px solid #dbe3ec;outline-offset:1px}
.form-grid.expanded{grid-template-columns:1.25fr 1fr 1.25fr 1fr auto auto}.folder-row.expanded{grid-template-columns:1.25fr 1fr 1.25fr 1fr auto auto}.folder-identity{display:grid;gap:6px;min-width:0}.folder-identity code{overflow:hidden;text-overflow:ellipsis}.stack.tight{gap:7px}
.copy-row{display:grid;grid-template-columns:1fr auto;gap:10px}.share-form{grid-template-columns:1.4fr .75fr 1fr auto auto}.share-list{display:grid;gap:10px}.share-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#101419}.share-row>div:first-child{display:grid;gap:6px;min-width:0}.share-row code{display:block;max-width:900px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-row.expired{opacity:.55}.share-actions{display:flex;align-items:center;gap:8px}.share-actions form{margin:0}
.share-banner{margin-bottom:30px;padding:26px;border:1px solid var(--line);background:var(--panel);border-radius:16px}.share-banner h1{font-size:clamp(32px,5vw,54px);letter-spacing:-.05em;margin:7px 0 12px}.share-banner p{color:var(--muted);max-width:760px}
.feedback-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.feedback-card{display:grid;grid-template-columns:120px minmax(0,1fr);gap:13px;background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.feedback-card>a{display:block;background:#080a0c}.feedback-card img{width:120px;height:100%;min-height:100px;object-fit:cover;display:block}.feedback-card>div{display:grid;align-content:center;gap:6px;padding:10px 12px 10px 0;min-width:0}.feedback-counts{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin-top:4px}
@media(max-width:1100px){.form-grid.expanded,.folder-row.expanded,.share-form{grid-template-columns:1fr 1fr}.bulkbar{grid-template-columns:auto auto 1fr}.bulkbar .button{width:100%}}
@media(max-width:850px){.top-search{display:none}.top-actions{gap:10px}.topbar nav{gap:10px;flex-wrap:wrap;justify-content:flex-end}.gallery-filter{grid-template-columns:1fr 1fr}.bulkbar{position:static;grid-template-columns:1fr 1fr}.bulkbar select{grid-column:1/-1}.form-grid.expanded,.folder-row.expanded,.share-form{grid-template-columns:1fr}.copy-row{grid-template-columns:1fr}.share-row{align-items:flex-start;flex-direction:column}.feedback-grid{grid-template-columns:1fr}.lightbox-meta{display:none}}
@media(max-width:560px){.gallery-filter{grid-template-columns:1fr}.bulkbar{grid-template-columns:1fr}.review-grid{grid-template-columns:1fr 1fr}.review-copy{padding:9px}.topbar{height:auto;min-height:64px;padding-top:10px;padding-bottom:10px}.topbar nav a{font-size:12px}}

/* v2 additions */
.top-actions{display:flex;align-items:center;gap:18px}.top-search{margin:0}.top-search input{width:220px;padding:8px 10px}
.hero.compact{padding-bottom:22px}.gallery-description{max-width:780px;color:var(--muted);font-size:16px!important;line-height:1.55}.gallery-page-head{align-items:flex-end}.head-buttons{display:flex;gap:10px;flex-wrap:wrap}
.breadcrumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:24px;color:var(--muted);font-size:13px}.breadcrumbs a{text-decoration:none}.breadcrumbs strong{color:var(--text)}
.toolbar{display:flex;justify-content:space-between;gap:14px;margin-bottom:30px}.gallery-filter{display:grid;grid-template-columns:minmax(220px,360px) 180px auto auto;gap:9px;width:100%}.button.ghost{background:transparent}.button.danger{border-color:#63343a;background:#361d21;color:#ffb2b2}.button.danger:hover{background:#46252a}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:30px 0 14px}.section-title h2{margin:0;font-size:19px}.subalbums{margin-bottom:34px}.card-copy>div{min-width:0}.card-copy p{margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.4}
.photo-title-wrap{min-width:0}.photo-title-wrap small{display:block;color:var(--muted);margin-top:4px}.reaction-row{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.reaction{appearance:none;border:0;border-right:1px solid var(--line);background:#101419;color:var(--muted);padding:9px;font:inherit;font-size:12px;cursor:pointer}.reaction:last-child{border-right:0}.reaction:hover{color:var(--text);background:#171c22}.reaction.active{color:var(--text);background:#222932;font-weight:700}
.lightbox-stage{height:calc(100% - 78px);display:grid;place-items:center;overflow:hidden}.lightbox-stage #lightbox-image{width:100%;height:100%;object-fit:contain}.lightbox-bar.expanded{height:78px}.lightbox-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:5px;color:var(--muted);font-size:11px}.lightbox-meta b{color:#d5dbe2;margin-right:4px}
.search-large{display:grid;grid-template-columns:1fr auto;gap:10px;max-width:760px}.search-large input{font-size:17px;padding:13px 14px}.search-count{margin:18px 0}.link-open{text-decoration:none}.search-results{margin-top:18px}
.bulkbar{position:sticky;top:78px;z-index:12;display:grid;grid-template-columns:auto auto minmax(220px,1fr) auto auto;gap:10px;align-items:center;background:#11161b;border:1px solid var(--line);border-radius:13px;padding:10px 12px;margin-bottom:16px;box-shadow:0 12px 28px rgba(0,0,0,.25)}.review-card{position:relative}.review-select{position:absolute;top:10px;left:10px;z-index:3;background:rgba(0,0,0,.72);border-radius:8px;padding:7px}.review-select input{width:18px;height:18px}.review-card:has(.select-image:checked){outline:2px solid #dbe3ec;outline-offset:1px}
.form-grid.expanded{grid-template-columns:1.25fr 1fr 1.25fr 1fr auto auto}.folder-row.expanded{grid-template-columns:1.25fr 1fr 1.25fr 1fr auto auto}.folder-identity{display:grid;gap:6px;min-width:0}.folder-identity code{overflow:hidden;text-overflow:ellipsis}.stack.tight{gap:7px}
.copy-row{display:grid;grid-template-columns:1fr auto;gap:10px}.share-form{grid-template-columns:1.4fr .75fr 1fr auto auto}.share-list{display:grid;gap:10px}.share-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#101419}.share-row>div:first-child{display:grid;gap:6px;min-width:0}.share-row code{display:block;max-width:900px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-row.expired{opacity:.55}.share-actions{display:flex;align-items:center;gap:8px}.share-actions form{margin:0}
.share-banner{margin-bottom:30px;padding:26px;border:1px solid var(--line);background:var(--panel);border-radius:16px}.share-banner h1{font-size:clamp(32px,5vw,54px);letter-spacing:-.05em;margin:7px 0 12px}.share-banner p{color:var(--muted);max-width:760px}
.feedback-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.feedback-card{display:grid;grid-template-columns:120px minmax(0,1fr);gap:13px;background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.feedback-card>a{display:block;background:#080a0c}.feedback-card img{width:120px;height:100%;min-height:100px;object-fit:cover;display:block}.feedback-card>div{display:grid;align-content:center;gap:6px;padding:10px 12px 10px 0;min-width:0}.feedback-counts{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin-top:4px}

@media(max-width:1100px){.form-grid.expanded,.folder-row.expanded,.share-form{grid-template-columns:1fr 1fr}.bulkbar{grid-template-columns:auto auto 1fr}.bulkbar .button{width:100%}}
@media(max-width:850px){.top-search{display:none}.top-actions{gap:10px}.topbar nav{gap:10px;flex-wrap:wrap;justify-content:flex-end}.gallery-filter{grid-template-columns:1fr 1fr}.bulkbar{position:static;grid-template-columns:1fr 1fr}.bulkbar select{grid-column:1/-1}.form-grid.expanded,.folder-row.expanded,.share-form{grid-template-columns:1fr}.copy-row{grid-template-columns:1fr}.share-row{align-items:flex-start;flex-direction:column}.feedback-grid{grid-template-columns:1fr}.lightbox-meta{display:none}}
@media(max-width:560px){.gallery-filter{grid-template-columns:1fr}.bulkbar{grid-template-columns:1fr}.review-grid{grid-template-columns:1fr 1fr}.review-copy{padding:9px}.topbar{height:auto;min-height:64px;padding-top:10px;padding-bottom:10px}.topbar nav a{font-size:12px}}

/* Thumbnail cache admin */
.cache-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:20px}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;gap:8px}.stat-card span{font-size:12px;color:var(--muted)}.stat-card strong{font-size:25px;letter-spacing:-.04em}.cache-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.cache-progress{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.progress-line{display:flex;justify-content:space-between;gap:16px;margin-bottom:10px}.cache-progress progress{width:100%;height:14px;accent-color:#f4f6f8}.cache-progress p{margin-bottom:0}
@media(max-width:1000px){.cache-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.cache-stats{grid-template-columns:repeat(2,1fr)}.cache-actions{display:grid}.cache-actions .button{width:100%}}

/* Image tags, notes and filesystem management */
.tag-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.tag-row.compact{margin-top:6px}.tag-chip{display:inline-flex;align-items:center;border:1px solid #39444f;background:#11161b;color:#cbd4dd;border-radius:999px;padding:3px 7px;font-size:10px;line-height:1.2}.photo-note{margin:7px 0 0;color:var(--muted);font-size:11px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.search-photo-meta{align-items:flex-start}.search-photo-meta .photo-title-wrap{flex:1}
textarea{width:100%;border:1px solid #35404b;background:#0f1216;color:var(--text);border-radius:9px;padding:10px 11px;font:inherit;outline:none;resize:vertical}textarea:focus{border-color:#6c7887}
.manage-toolbar{padding:16px}.image-admin-filter{display:grid;grid-template-columns:minmax(260px,1fr) minmax(240px,1fr) auto auto;gap:12px;align-items:end}.image-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px}.image-admin-card{padding:0;overflow:hidden;margin:0}.image-admin-preview{display:block;aspect-ratio:16/10;background:#07090b}.image-admin-preview img{width:100%;height:100%;object-fit:cover;display:block}.image-admin-fields{padding:15px;display:grid;gap:12px}.image-admin-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.image-admin-actions{display:flex;gap:8px;flex-wrap:wrap}.image-admin-actions .button{flex:1 1 auto}
.gallery-admin-row{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(420px,1.7fr) minmax(330px,1.2fr);gap:18px;align-items:start;margin:0}.gallery-admin-settings{display:grid;grid-template-columns:1fr 1fr;gap:11px}.gallery-admin-settings>.stack,.gallery-admin-settings>.gallery-save-row{align-self:end}.gallery-admin-danger{display:grid;gap:12px;padding-left:18px;border-left:1px solid var(--line)}.gallery-danger-actions{display:flex;gap:8px;flex-wrap:wrap}.gallery-danger-actions .button{flex:1 1 auto}
@media(max-width:1100px){.gallery-admin-row{grid-template-columns:1fr 1.4fr}.gallery-admin-danger{grid-column:1/-1;border-left:0;border-top:1px solid var(--line);padding:16px 0 0}.image-admin-filter{grid-template-columns:1fr 1fr auto auto}}
@media(max-width:760px){.gallery-admin-row,.gallery-admin-settings,.image-admin-filter{grid-template-columns:1fr}.image-admin-grid{grid-template-columns:1fr}.gallery-admin-danger{grid-column:auto}.image-admin-actions{display:grid}.gallery-danger-actions{display:grid}}


/* Large-gallery rendering optimisation: off-screen cards do not need layout/
   paint work until the browser approaches them. */
.photo-card {
  content-visibility: auto;
  contain-intrinsic-size: 340px 310px;
}

/* Bulk image tagging */
.bulk-image-toolbar{position:sticky;top:82px;z-index:14;display:grid;gap:12px;padding:14px 16px;background:rgba(20,24,29,.96);backdrop-filter:blur(14px);box-shadow:0 10px 30px rgba(0,0,0,.18)}
.bulk-image-toolbar.has-selection{border-color:#596674}
.bulk-select-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.bulk-select-controls strong{margin-left:auto;font-size:13px}
.bulk-tag-controls{display:grid;grid-template-columns:minmax(260px,1fr) 190px auto;gap:10px;align-items:end}.bulk-tag-hint{margin:0}
.image-admin-card{position:relative;transition:border-color .15s ease,box-shadow .15s ease}.image-admin-card.is-selected{border-color:#718094;box-shadow:0 0 0 1px #718094 inset}
.image-admin-select{position:absolute;z-index:5;top:10px;left:10px;display:flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(5,7,9,.82);backdrop-filter:blur(8px);font-size:12px;font-weight:700}.image-admin-select input{width:16px;height:16px;margin:0;accent-color:#fff}.image-admin-select label{display:block;cursor:pointer;font-size:12px}
@media(max-width:760px){.bulk-image-toolbar{top:76px}.bulk-tag-controls{grid-template-columns:1fr}.bulk-select-controls strong{margin-left:0;width:100%}}

/* Public favourite / approval visibility and filtering */
.photo-open{position:relative}.photo-status-badges{position:absolute;left:10px;bottom:10px;display:flex;gap:6px;flex-wrap:wrap;pointer-events:none}.photo-status{display:none;align-items:center;padding:5px 8px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(7,9,11,.82);backdrop-filter:blur(8px);color:#fff;font-size:10px;font-weight:800;line-height:1;box-shadow:0 4px 14px rgba(0,0,0,.2)}.photo-status.shown{display:inline-flex}.favourite-status{color:#ffd0da}.approved-status{color:#c8f3d6}.photo-card[hidden]{display:none!important}
.gallery-filter:has(select[name="reaction"]){grid-template-columns:minmax(220px,1fr) 180px 200px auto auto}
@media(max-width:1000px){.gallery-filter:has(select[name="reaction"]){grid-template-columns:1fr 1fr 1fr}.gallery-filter:has(select[name="reaction"]) .button{width:100%}}
@media(max-width:650px){.gallery-filter:has(select[name="reaction"]){grid-template-columns:1fr}}


/* Privacy scanning / review */
.privacy-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.privacy-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(520px,1fr));gap:16px}.privacy-card{padding:0;overflow:hidden;margin:0}.privacy-compare{display:grid;grid-template-columns:1fr 1fr;background:#07090b}.privacy-compare figure{margin:0;position:relative;min-width:0}.privacy-compare figure+figure{border-left:1px solid var(--line)}.privacy-compare img{width:100%;aspect-ratio:4/3;object-fit:contain;display:block}.privacy-compare figcaption{position:absolute;left:8px;bottom:8px;padding:4px 7px;border-radius:999px;background:rgba(0,0,0,.72);font-size:10px;font-weight:800}.privacy-copy{padding:14px;display:grid;gap:8px}.privacy-counts{display:flex;gap:14px;font-size:12px}.privacy-actions{display:flex;gap:8px;flex-wrap:wrap}.privacy-actions .button{flex:1 1 auto}
@media(max-width:700px){.privacy-stats{grid-template-columns:repeat(2,1fr)}.privacy-grid{grid-template-columns:1fr}.privacy-compare{grid-template-columns:1fr}.privacy-compare figure+figure{border-left:0;border-top:1px solid var(--line)}}
.privacy-face-editor{position:relative;overflow:hidden}.privacy-face-editor>img{position:relative;z-index:1}.face-box{position:absolute;z-index:3;border:2px solid #ffd166;background:rgba(255,209,102,.08);padding:0;cursor:pointer;border-radius:5px;min-width:18px;min-height:18px}.face-box:hover{background:rgba(255,209,102,.2)}.face-box.is-selected{border-color:#ff5d73;background:rgba(255,93,115,.28);box-shadow:0 0 0 2px rgba(0,0,0,.45)}.face-box span{position:absolute;left:-2px;top:-22px;background:#111;color:#fff;border-radius:999px;font-size:10px;font-weight:800;min-width:20px;height:20px;display:grid;place-items:center;padding:0 5px}.face-box.is-selected span{background:#ff5d73;color:#111}.privacy-card:target{outline:2px solid var(--accent)}
.plate-box{position:absolute;z-index:4;border:2px solid #5cc8ff;background:rgba(92,200,255,.10);padding:0;cursor:pointer;border-radius:4px;min-width:18px;min-height:12px}.plate-box:hover{background:rgba(92,200,255,.25)}.plate-box.is-selected{border-color:#49e69d;background:rgba(73,230,157,.28);box-shadow:0 0 0 2px rgba(0,0,0,.45)}.plate-box span{position:absolute;left:-2px;top:-22px;background:#0b5f86;color:#fff;border-radius:999px;font-size:10px;font-weight:800;min-width:24px;height:20px;display:grid;place-items:center;padding:0 5px}.plate-box.is-selected span{background:#49e69d;color:#07140e}.privacy-counts em{font-style:normal;color:var(--muted);font-size:10px}
